Как JVM может решить, «принадлежит» ли класс (например, внутренние или вложенные классы) другому классу?

Я хочу немного лучше разбираться в файлах классов и внутренних / вложенных классах, и я» Мне интересно следующее:

  • Используется ли атрибут InnerClasses для ссылки на внутренние / вложенные классы в «содержащем» классе или он используется во внутренних / вложенных классах для ссылки на контейнер 'class?
  • Достаточно ли атрибута InnerClasses в файлах классов? Например. Должны ли внутренние / вложенные классы следовать за изменением имени с помощью $ или это просто соглашение?
  • Есть ли способ сделать класс похожим на внутренний / вложенный класс для JVM без установки параметра Атрибут InnerClasses и зависит ли он от поставщика JLM? (Я помню, что слышал, что реализация IBM в некоторых частях предъявляла менее строгие требования.)
  • Насколько сильно механизм загрузки классов JVM взаимодействует с отражением Java? Можно ли заставить JVM не соглашаться с результатами отражения Java?

Я попытался найти это в спецификации JVM, но не нашел описания действительного механизма.

Я нашел только это предложение в «Атрибут InnerClasses » , удаленно связанное с моим вопросом:

Виртуальная машина Java в настоящее время не проверяет согласованность {{1} } атрибут InnerClasses с любым файлом класса, фактически представляющим класс или интерфейс , на которые ссылается атрибут.

6
задан Seki 13 June 2015 в 12:01
поделиться