Java: получение надлежащего контекста «этого» в анонимном обработчике действий

#java #android #andengine

#java #Android #и инженер

Вопрос:

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

 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. просто в качестве примечания, поскольку в области действия someVar метода нет другой переменной с именем, компилятор мог бы вычислить, что она onAction ссылается на someVar поле-член без явного обозначения MainClass . ………. MainClass.this Автор приведенного здесь кода просто пытался быть явным, чтобы другому человеку было ясно, какая переменная увеличивается.

2. Посмотрите на это: download.oracle.com/javase/tutorial/java/javaOO/thiskey.html

Ответ №1:

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