Java: получение правильного контекста «this» в анонимном обработчике действий - PullRequest
3 голосов
/ 03 мая 2011

Я заметил кусок кода, который смотрел, который использовал автор:

class MainClass
{
  protected int someVar = 1;

  private SomeClass someClass = new SomeClass(this, new SomeActionListener() {
    protected void onAction() {
      MainClass.this.someVar ++;
    }
  });

  public MainClass()
  {
  }
}

Обратите внимание, как он использовал MainClass.this, чтобы получить правильный контекст 'this', чтобы изменить область видимости обратно на MainClass. Я никогда не видел, чтобы это было сделано раньше - кто-нибудь может объяснить?

1 Ответ

5 голосов
/ 03 мая 2011

Анонимный экземпляр привязывается к области действия экземпляра, в котором он создан.Поэтому он также может получить доступ ко всему внутри.this будет ссылаться на анонимный экземпляр, а MainClass.this - на экземпляр, в котором был создан анонимный экземпляр.Например, если бы член someClass был бы объявлен как static, вы не могли бы использовать MainClass.this.

...