次を使用して、囲んでいるクラスのインスタンスを取得できることを知っています。
OuterClass.this
しかし、私は内部クラスのコード自体の中でしかそれを行うことができません. 私が持っているのは、別のクラスコードを使用した内部クラスインスタンスの参照だけです。内部クラスのインスタンスを介して OuterClass インスタンスを取得するにはどうすればよいですか?
OuterClass
外部から呼び出し元に戻る getter を定義できます。
public class InnerClass {
...
public OuterClass getOuterInstance() {
return OuterClass.this;
}
}
ジョブにリフレクションを使用できます (ただし、使用しないでください)。
import java.lang.reflect.Field;
public class Outer {
public class Inner {
}
public static void main(String[] args) throws Exception {
// Create the inner instance
Inner inner = new Outer().new Inner();
// Get the implicit reference from the inner to the outer instance
// ... make it accessible, as it has default visibility
Field field = Inner.class.getDeclaredField("this$0");
field.setAccessible(true);
// Dereference and cast it
Outer outer = (Outer) field.get(inner);
System.out.println(outer);
}
}
もちろん、暗黙的な参照の名前はまったく信頼できないので、私が言ったように、そうすべきではありません:-)