Что означает "квалифицировать эту" конструкцию в java?
В Эффективная Java внутри элемента "Пункт 22: Использовать статические классы членов над нестатическими" Джош Блох говорит:
Каждый экземпляр нестатического класса-члена неявно связан с содержащий экземпляр его содержащего класса. Внутри примера методы нестатического класс-член, вы можете вызывать методы на прилагаемом экземпляре или получить ссылку к охватывающему экземпляру, используя соответствующую конструкцию.
Что он подразумевает под Квалифицированной этой конструкцией?
Ответы
Ответ 1
Без квалификатора x()
будет возвращаться. С квалификатором вместо этого вызывается метод экземпляра x()
.
class Envelope {
void x() {
System.out.println("Hello");
}
class Enclosure {
void x() {
Envelope.this.x(); /* Qualified*/
}
}
}
Ответ 2
Нестатический класс-член имеет неявную ссылку на экземпляр охватывающего класса. Квалифицированный Этот термин относится к экземпляру охватывающего класса. Если класс-оболочка A
, а внутренний класс B
, вы можете обратиться к прилагаемой ссылке A
от B
как A.this
.