title: Singleton via enum way is lazy initialized?
body: <p>This is a very wide-spread enum singleton code:</p>
  
  <pre><code>public enum enumClazz{
     INSTANCE
     enumClazz(){
       //do something
     }
  }
  </code></pre>
  
  <p>and a bunch of places said it is a lazy initialization. But I am confused after I read Chapter 7 of '<a href="http://www.artima.com/insidejvm/ed2/lifetype.html" rel="noreferrer">Inside the Java Virtual Machine</a>' -- The Lifetime of a Type:</p>
  
  <blockquote>
    <p>The Java virtual machine specification gives implementations
    flexibility in the timing of class and interface loading and linking,
    but strictly defines the timing of initialization. All implementations
    must initialize each class or interface on its first active use. The
    following six situations qualify as active uses:</p>
    
    <ul>
    <li>A new instance of a class is created (in bytecodes, the execution of a new instruction. Alternatively, via implicit creation,
    reflection, cloning, or deserialization.) </li>
    <li>The invocation of a static method declared by a class (in bytecodes, the execution of an invokestatic instruction) </li>
    <li><strong>The use or assignment of a static field declared by a class or interface, except for static fields that are final and initialized by
    a compile-time constant expression (in bytecodes, the execution of a
    getstatic or putstatic instruction)</strong> </li>
    <li>The invocation of certain reflective methods in the Java API, such as methods in class Class or in classes in the java.lang.reflect
    package </li>
    <li>The initialization of a subclass of a class (Initialization of a class requires prior initialization of its superclass.) </li>
    <li>The designation of a class as the initial class (with the main()&lt; method) when a Java virtual machine starts up</li>
    </ul>
  </blockquote>
  
  <p>The third point with bold style clarify that if the field is <code>static final</code>, the initialization of the field is happened at compile-time. Likewise, the <code>INSTANCE</code> in <code>enumClazz</code> is implicitly equal to <code>public static final</code> and comply with the third point.</p>
  
  <p>Can someone correct me if my understanding is wrong?</p>