[英]How access private methods in abstract class using reflection in Java?
我有一个示例抽象类代码,如下所示
public abstract class AbstractClassA {
public abstract void m();
private int aaa(Integer x){
System.out.println(x);
return x;
}
}
然后我尝试以下方式访问此私有方法。
Method m = AbstractClassA.class.getDeclaredMethod("aaa", Integer.class);
m.setAccessible(true);
m.invoke(5);
那时候我发出了吼声错误。
Exception in thread "main" java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
这不是实际的实现。 这是一些示例,我的实际代码抽象类有公共方法,它调用私有方法。
请帮我解决这个问题。
您对Method.invoke()
调用缺少一个参数:它的第一个参数应该是要调用该方法的对象; 以下所有参数都是调用方法的实际参数。
使用此库通常可以在Java或Android中调用任何公共,私有或受保护的方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.