Java反射:访问内部类中的私有方法



我在使用反射 API 的公共类中的私有类中使用私有方法时遇到问题。下面是一个简化的代码示例:

public class Outer {
private class Inner {
private Integer value;
private Inner() {
this(0);
}
private Inner(Integer y) {
value = y;
}
private Integer someMethod(Integer x) {
return x * x;
}
}
}

同样,我希望能够实例化Outer类对象,然后从私有Inner类调用someMethod。 我一直在尝试通过反射来做到这一点,但我似乎无法通过 1 级。 此外,内部类可能有也可能没有大多数代码似乎使用的构造函数。上面的代码只是框架。

我当前的代码:

Outer outerObject = new Outer();
Constructor<?> constructor = innerNodeClass.getDeclaredConstructor(Outer.class);
constructor.setAccessible(true);
Object innerObject = constructor.newInstance(outerObject);
innerObject.someMethod(5)

我查找了各种方法来获取内部类或私有方法,但找不到在不使用构造函数的情况下将外部对象获取到内部对象的方法。 我只对在外部对象的元素上使用内部类中的私有方法感兴趣。

获得内部对象的实例后,可以使用反射来调用方法本身:

Method someMethod = innerObject.getClass().getDeclaredMethod("someMethod", Integer.TYPE);
someMethod.setAccessible(true);
someMethod.invoke(innerObject, 5);

最新更新