Wie erhält man in Java einen Verweis auf die umschließende Klasse von einer anonymen inneren Klasse?[Duplikat]
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?
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.