Biorąc pod uwagę następujący kod:
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.
}
};
}
}
Chcę uzyskać dostęp Container.select()
z select()
metody mojej klasy anonimowej . Jednak this.select()
ponownie wywołałby select()
metodę klasy anonimowej .
Moja sugestia byłaby taka:
Wprowadź pole do kontenera, np
private Container self = this;
Teraz mogę uzyskać dostęp Container.select()
, dzwoniąc self.select()
z klasy anonimowej.
Czy to rozsądny sposób? Czy są jakieś lepsze sposoby?
java
this
anonymous-class
Pion
źródło
źródło
this
że można rozróżniać nawet słowa kluczowe, tak jak metody i atrybuty. +1Container
klasę. Żaden z jej przodków nie zostanie przyjęty.Możesz pisać,
Container.this.select()
aby odróżnić się od klasy wewnętrznej!źródło