Учитывая следующий код:
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.
}
};
}
}
Я хочу получить доступ Container.select()
из select()
метода моего анонимного класса . Однако this.select()
снова вызовет метод анонимного класса select()
.
Мое предложение будет:
Введите поле в контейнер, например,
private Container self = this;
Теперь я могу получить доступ Container.select()
, позвонив self.select()
из анонимного класса.
Это разумный способ? Или есть способы получше?
this
ключевые слова можно различить так же, как методы и атрибуты. +1Container
класс. Ни один из его предков не будет принят.Вы можете написать
Container.this.select()
в отличие от внутреннего класса!источник