Gegeben den folgenden Code:
public interface Selectable {
public void select();
}
public class Container implements Selectable {
public void select() {
...
}
public void createAnonymousClass() {
Selectable s = new Selectable() {
public void select() {
//see comment below.
}
};
}
}
Ich möchte über Container.select()
die select()
Methode meiner anonymen Klasse zugreifen . Allerdings this.select()
würde wieder die anonyme Klasse nennt select()
Methode.
Mein Vorschlag wäre:
Führen Sie ein Feld in Container ein, z
private Container self = this;
Jetzt kann ich zugreifen, Container.select()
indem ich self.select()
aus der anonymen Klasse heraus anrufe.
Ist das ein vernünftiger Weg? Oder gibt es bessere Möglichkeiten?
this
Schlüsselwörter genau wie Methoden und Attribute unterschieden werden können. +1Container
Klasse angeben müssen . Jeder seiner Vorfahren wird nicht akzeptiert.Sie können schreiben,
Container.this.select()
um sich von der inneren Klasse zu unterscheiden!quelle