Как компилятор и система времени выполнения работают с вложенными типами в Java?

Как компилятор знает о вложенных типах, таких как:

  • Вложенные внутренние классы
  • Анонимный класс
  • Вложенный интерфейс

.....так далее

Нужна ясность.......

1 ответ

Решение

Компилятор извлекает внутренние классы и создает отдельные *class файл для каждого. Внутреннее имя класса создается как OuterClassName$InnerClassName, Анонимные внутренние классы не имеют имен, поэтому их имена создаются как OuterClassName$1, OuterClassName$2, так далее.

Внутренние классы имеют специальную ссылку на экземпляр внешнего класса, используя синтаксис OuterClassName.this,

Поскольку внутренние классы скомпилированы в отдельные файлы классов, JVM вообще не работает с внутренними классами. Он имеет дело с обычными классами, которые имеют "особые" имена, описанные выше.

Другие вопросы по тегам