在使用反射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
类对象,然后从私有someMethod
类调用Inner
。我一直在尝试使用反射进行此操作,但似乎无法超过1级。而且,内部类可能具有也可能没有大多数代码似乎都在使用的构造函数。上面的代码只是框架。
我当前的代码:
Outer outerObject = new Outer();
Constructor<?> constructor = innerNodeClass.getDeclaredConstructor(Outer.class);
constructor.setAccessible(true);
Object innerObject = constructor.newInstance(outerObject);
innerObject.someMethod(5)
我查找了各种获取内部类或私有方法的方法,但找不到不使用构造函数将外部对象获取到内部对象的方法。我只对在外部对象的元素上的内部类中使用private方法感兴趣。
答案 0 :(得分:3)
一旦有了内部对象的实例,就可以使用反射来调用方法本身:
Method someMethod = innerObject.getClass().getDeclaredMethod("someMethod", Integer.TYPE);
someMethod.setAccessible(true);
someMethod.invoke(innerObject, 5);