Wie kann von einer inneren Klasse aus auf „dies“ der äußeren Klasse zugegriffen werden?

70

Ist es möglich, thisinnerhalb einer Java-Innenklasse einen Verweis darauf zu erhalten ?

dh

class Outer {

  void aMethod() {

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

Antworten:

96

Sie können wie folgt auf die Instanz der äußeren Klasse zugreifen:

Outer.this
Guillaume
quelle
32

Äußeres

dh.

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

Übrigens: In Java beginnen Klassennamen gemäß Konvention mit Großbuchstaben.

OscarRyz
quelle
8

Stellen Sie dem Klassennamen der äußeren Klasse Folgendes voran:

outer.this
Statiker
quelle
2

Ja , Sie können mit äußeren Klassennamen mit dieser . äußere

Giri
quelle
0

Extra: Es ist nicht möglich, wenn die innere Klasse als 'statisch' deklariert ist.

Josbert Lonnee
quelle