0
public class OuterClass {
private static class InnerClass {
public int id = 0;
}
private static InnerClass[] innerArr;
}
需要在Java中使用反射来获取innerArr值。如何用Java中的反射获取pirvate内部类实例?
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class<?> cla = loader.loadClass("OuterClass");
Field innerArrRef = cla.getDeclaredField("innerArr");
innerArrRef.setAccessible(true);
OuterClass.InnerClass[] innerArrValue = (OuterClass.InnerClass[])innerArrRef.get(cla);
上面的代码不适用于InnerClass是一个私人类。
发布您尝试的[mcve]并描述您遇到问题的位置。 –
把'InnerClass'这个名称给声明为'private static class InnerClass'的成员类型是个坏主意,因为根据Java中的定义,内部类是未声明为'static'的成员类。这使得名称“Inner'-anything”对于静态嵌套类型非常具有误导性。 (把一个多余的单词'Class'放在一个类的名字里也是一个坏主意。) –