web-dev-qa-db-ja.com

外部クラスの「これ」に内部クラスからどのようにアクセスできますか?

Java内部クラス内からthisへの参照を取得することは可能ですか?

つまり.

class Outer {

  void aMethod() {

    NewClass newClass = new NewClass() {
      void bMethod() {
        // How to I get access to "this" (pointing to outer) from here?
      }
    };
  }
}
69
llm

次のようにして、外部クラスのインスタンスにアクセスできます。

Outer.this
86
Guillaume

Outer.this

すなわち。

class Outer {
    void aMethod() {
        NewClass newClass = new NewClass() {
            void bMethod() {
                System.out.println( Outer.this.getClass().getName() ); // print Outer
            }
        };
    }
}

ところで、Javaクラス名は慣例により大文字で始まります。

30
OscarRyz

これに外部クラスのクラス名を追加します:

outer.this
7
staticman

はいthisで外部クラス名を使用できます。 outer.this

2
giri

追加:内部クラスが「静的」と宣言されている場合は不可能です。

0
Josbert Lonnee