3

次を使用して、囲んでいるクラスのインスタンスを取得できることを知っています。

OuterClass.this

しかし、私は内部クラスのコード自体の中でしかそれを行うことができません. 私が持っているのは、別のクラスコードを使用した内部クラスインスタンスの参照だけです。内部クラスのインスタンスを介して OuterClass インスタンスを取得するにはどうすればよいですか?

4

2 に答える 2

3

OuterClass外部から呼び出し元に戻る getter を定義できます。

public class InnerClass {
    ...
    public OuterClass getOuterInstance() {
        return OuterClass.this;
    }
}
于 2013-03-06T16:52:07.330 に答える
0

ジョブにリフレクションを使用できます (ただし、使用しないでください)。

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);
    }
}

もちろん、暗黙的な参照の名前はまったく信頼できないので、私が言ったように、そうすべきではありません:-)

于 2013-03-06T17:01:15.547 に答える