#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
.