Wie erhält man in Java einen Verweis auf die umschließende Klasse von einer anonymen inneren Klasse?[Duplikat]

StackOverflow https://stackoverflow.com/questions/31201

  •  09-06-2019
  •  | 
  •  

Frage

Auf diese Frage gibt es hier bereits eine Antwort:

Ich erstelle gerade einen expliziten Verweis darauf in der äußeren Klasse, damit ich in der anonymen inneren Klasse einen Namen habe, auf den ich verweisen kann.Gibt es einen besseren Weg, dies zu tun?

War es hilfreich?

Lösung

Das habe ich erst kürzlich gefunden.Verwenden OuterClassName.this.

class Outer {
    void foo() {
        new Thread() {
            public void run() {
                Outer.this.bar();
            }
        }.start();
    }
    void bar() {
        System.out.println("BAR!");
    }
}

Aktualisiert Wenn Sie nur das Objekt selbst möchten (anstatt Mitglieder aufzurufen), dann Outer.this ist der richtige Weg.

Andere Tipps

Verwenden EnclosingClass.this

Sie können weiterhin Outer.class verwenden, um die Klasse des äußeren Klassenobjekts abzurufen (was dasselbe Klassenobjekt wie Outer.this.getClass() zurückgibt, aber effizienter ist).

Wenn Sie auf statische Daten in der umschließenden Klasse zugreifen möchten, können Sie „Outer.name“ verwenden, wobei „name“ das statische Feld oder die statische Methode ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top