public class OuterClass {
private static class InnerClass {
public int id = 0;
}
private static InnerClass[] innerArr;
}
JavaのリフレクションでinnerArr値を取得する必要があります。Javaでリフレクションして内部クラスインスタンスを取得するにはどうすればよいですか?
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]として試したことを投稿し、問題のある箇所を説明してください。 –
内部クラスが 'static'宣言されていないメンバークラスであるため、' private static class InnerClass'と宣言されたメンバ型に 'InnerClass'という名前を付けるのは悪い考えです。これにより、静的なネストされた型では、「Inner'-anything」という名前が非常に誤解を招くようになります。 (クラス名に 'Class'という冗長な単語を入れるのも悪い考えです。) –