Доступ "это" из анонимного класса Java


учитывая следующий код:

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() из анонимного класса.

это разумный путь? Или есть какие-то лучшие способы?

2 126

2 ответа:

Container.this.select();

можно писать Container.this.select() в отличие от внутреннего класса !