Как компилятор и система времени выполнения работают с вложенными типами в Java?
Как компилятор знает о вложенных типах, таких как:
- Вложенные внутренние классы
- Анонимный класс
- Вложенный интерфейс
.....так далее
Нужна ясность.......
1 ответ
Решение
Компилятор извлекает внутренние классы и создает отдельные *class
файл для каждого. Внутреннее имя класса создается как OuterClassName$InnerClassName
, Анонимные внутренние классы не имеют имен, поэтому их имена создаются как OuterClassName$1
, OuterClassName$2
, так далее.
Внутренние классы имеют специальную ссылку на экземпляр внешнего класса, используя синтаксис OuterClassName.this
,
Поскольку внутренние классы скомпилированы в отдельные файлы классов, JVM вообще не работает с внутренними классами. Он имеет дело с обычными классами, которые имеют "особые" имена, описанные выше.