簡體   English   中英

如何使用Java中的反射訪問抽象類中的私有方法?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM