¿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:
new
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é?