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

Antworten:


96

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

Outer.this

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.


8

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

outer.this

2

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


0

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.