Синглтон через enum way является ленивым инициализированным?

Это очень распространенный синглтон-код enum:

public enum enumClazz{
   INSTANCE
   enumClazz(){
     //do something
   }
}

и множество мест сказали, что это ленивая инициализация. Но я запутался после того, как прочитал главу 7Внутри виртуальной машины Java » - Срок службы типа:

Спецификация виртуальной машины Java предоставляет реализациям гибкость во времени загрузки класса и интерфейса и связывания, но строго определяет время инициализации. Все реализации должны инициализировать каждый класс или интерфейс при первом активном использовании. Следующие шесть ситуаций квалифицируются как активные использования:

Создается новый экземпляр класса (в байт-кодах - выполнение новой инструкции. Альтернативно, через неявное создание, отражение, клонирование или десериализацию.)Вызов статического метода, объявленного классом (в байт-кодах - выполнение инструкции invokestatic)Использование или присвоение статического поля, объявленного классом или интерфейсом, за исключением статических полей, которые являются окончательными и инициализируются выражением константы во время компиляции (в байтовых кодах - выполнение инструкции gettatic или puttatic)Вызов определенных отражающих методов в Java API, таких как методы в классе Class или в классах в пакете java.lang.reflectИнициализация подкласса класса (Инициализация класса требует предварительной инициализации его суперкласса.)Обозначение класса в качестве исходного класса (с main () < метод), когда виртуальная машина Java запускается

Третий пункт жирным шрифтом уточнить, что если полеstatic final, инициализация поля происходит во время компиляции. Точно так жеINSTANCE вenumClazz неявно равноpublic static final и соблюдать третий пункт.

Может ли кто-то исправить меня, если мое понимание неверно?

Ответы на вопрос(2)

Ваш ответ на вопрос