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'放在一個類的名字裏也是一個壞主意。) –