¿Por qué el campo estático privado = new Singleton no es perezoso en Java?

Leí muchos artículos sobre Singleton, en la mayoría de los cuales los autores dijeron que esta variación de Singleton en Java:

public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton() {}
    public static Singleton getInstance() {
        return instance;
    }
}

esNO PEREZOSO (EAGER entonces)

Pero no puedo entender por quéSingleton() el constructor se invocará solo enSingleton Inicialización de clase. Conozco varias razones, que pueden desencadenar la inicialización de la clase:

Utilizandonew con constructor (pero en este caso el constructor es privado).Acceder o configurar un campo estático (aquí privado).Usando el método estático.Con reflexión:Class.forName("Singleton").

Entonces, nuestro objeto se creará solo al usar el método estáticogetInstance() (aún esPEREZOSO inicialización, supongo) y con reflexión (pero la reflexión puede arruinar muchas variaciones Singleton, exceptoenum tal vez).

Tal vez no puedo ver algo obvio, explícame por favor, ¿dónde me equivoqué?

Respuestas a la pregunta(2)

Su respuesta a la pregunta