Подтвердить что ты не робот

Что такое синтетические поля в Java?

Может ли кто-нибудь объяснить в понятном смысле важность синтетических полей в Java. Я помню, как читал его в контексте нестатических внутренних классов, где каждый такой внутренний экземпляр класса поддерживает ссылку на охватывающий класс. Почему такие ссылки/поля называются синтетическими полями?

4b9b3361

Ответ 1

Синтетическое поле - это поле, созданное компилятором, которое связывает локальный внутренний класс с локальным параметром блока или ссылочным типом. Компилятор синтезирует определенные скрытые поля и методы для реализации области определения имен. Эти поля являются частными, если не указано иное, или они не превышают объем пакета. Вы можете получить дополнительную информацию здесь и в JLS

Член класса, который не отображается в исходном коде, должен быть отмечен с использованием атрибута Synthetic, иначе он должен иметь установленный флаг ACC_SYNTHETIC. Единственными исключениями из этого требования являются методы, генерируемые компилятором, которые не рассматриваются как артефакты реализации, а именно метод инициализации экземпляра, представляющий конструктор по умолчанию языка программирования Java (§2.9), метод инициализации класса (§2.9) и Enum. values ​​() и Enum.valueOf().