Овладение внешним объектом класса от внутреннего объекта класса

Можно сделать очевидные вещи: ищите младший, II, III, и т.д. как суффиксы, и г-н, г-жа, Доктор, и т.д. как префиксы и удалите их, тогда первое слово является именем, последнее слово является фамилией, все промежуточное вторые имена. Кроме этого, нет никакого надежного решения для этого.

А идеальным примером является David Lee Roth (фамилия: Roth) и Eddie Van Halen (фамилия: Van Halen). Если именем Ann Marie Smith является "Ann Marie", нет никакого способа отличить это от Ann, имеющей второе имя Marie.

228
задан peakit 29 November 2009 в 09:26
поделиться

2 ответа

Внутри самого внутреннего класса вы можете использовать OuterClass.this . Это выражение, которое позволяет ссылаться на любой лексически включающий экземпляр, описано в JLS как Qualified this .

Я не думаю , что есть способ получить однако экземпляр извне кода внутреннего класса. Конечно, вы всегда можете ввести свое собственное свойство:

public OuterClass getOuter() {
    return OuterClass.this;
}

РЕДАКТИРОВАТЬ: Поэкспериментировав, похоже, что поле, содержащее ссылку на внешний класс, имеет доступ на уровне пакета - по крайней мере, с JDK, который я использую.

РЕДАКТИРОВАТЬ: Используемое имя ( this $ 0 ) действительно на Java, хотя JLS не рекомендует его использование: механически сгенерированный исходный код или, редко, чтобы получить доступ к уже существующим именам на устаревшие системы.

310
ответ дан 23 November 2019 в 03:47
поделиться

OuterClass.this ссылается на внешний класс.

32
ответ дан 23 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: