我有一个Dummy
具有名为的私有方法的类sayHello
。我想打电话sayHello
从外面Dummy
。我认为通过反思应该是可能的,但我得到了IllegalAccessException
。有任何想法吗???
use setAccessible(true)
在使用 Method 对象之前invoke
method.
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
}
}
如果有人有兴趣调用带参数的方法,请参阅当以字符串形式给出方法名称时,如何调用 Java 方法? https://stackoverflow.com/questions/160970,具体回答如下https://stackoverflow.com/a/30671481 https://stackoverflow.com/a/30671481.
只是不要忘记添加setAccessible(true)
调用时private
方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)