[英]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.