我有一个Dummy
具有称为的私有方法的类sayHello
。我想sayHello
从外面打电话Dummy
。我认为应该可以反思,但是我得到了IllegalAccessException
。有任何想法吗???
利用setAccessible(true)
使用其之前的Method对象的invoke
方法。
import java.lang.reflect.*;
class Dummy{
private void foo(){
System.out.println("hello foo()");
}
}
class Test{
public static void main(String[] args) throws Exception {
Dummy d = new Dummy();
Method m = Dummy.class.getDeclaredMethod("foo");
//m.invoke(d);// throws java.lang.IllegalAccessException
m.setAccessible(true);// Abracadabra
m.invoke(d);// now its OK
}
}
我正在装一个应用程序,它工作得很好。但当我使用 在OuterClass中,并通过
我想用PHP在我的简单ORM中实现一个钩子系统: 这会导致一个致命错误: 致命错误:调用私人方法付款::before_save()从上下文'记录'中 有道理。 我可以将范围更改为public,但这似乎很难看:在保存()之前,除了支付之外,没有人与
问题内容: 因此,此代码的输出为。现在,我想到了一个问题:作为 派生 类对象的 po 怎么能调用作为基类的 PrivateOverride 的私有方法? 问题答案: 因为您在类中定义了main方法。如果将main方法放在Derived类中,它将无法编译,因为在该类中不可见。 class中的po.f()调用不是多态的,因为in 类为,所以in class中的值不会被覆盖。
问题内容: 存在问题 如果我有一个像这样的类层次结构: 在实例类型为B的情况下,是否可以从main方法调用A的toString? 当然,像o.super.toString()这样的东西不会编译… 问题答案: 您不能这样做,而且是非常故意的:它会破坏封装。 假设您有一个类,该类使用一种方法通过一些业务规则来验证输入,然后调用超类方法。如果调用方可以忽略该覆盖,那么它将使该类变得毫无意义。 如果发现自
问题内容: public class A{ private int getC(){ return 0; } } 您能告诉我是否有可能通过java中的反射来做一些吸引人的事情吗? 问题答案: class A{ 编辑:这是一个安静的老帖子,但增加了一些建议 重新考虑您的设计 调用父方法的私有方法,虽然可以通过反射实现,但是不应该这样做。在父对象上调用私有方法可能会使类处于无效状态,并可能导致意外行为。
我是一个初学程序员,我已经试着解决这个问题几天了,我不知道还能做什么。你能帮我吗?