繁体   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