Sobre la base de lo que se ha escrito en la pregunta SO Mejor implementación de singleton en Java , es decir, sobre el uso de una enumeración para crear un singleton, ¿cuáles son las diferencias / pros / contras entre (constructor omitido)
public enum Elvis {
INSTANCE;
private int age;
public int getAge() {
return age;
}
}
y luego llamando Elvis.INSTANCE.getAge()
y
public enum Elvis {
INSTANCE;
private int age;
public static int getAge() {
return INSTANCE.age;
}
}
y luego llamando Elvis.getAge()
Una gran ventaja es cuando su singleton debe implementar una interfaz. Siguiendo tu ejemplo:
public enum Elvis implements HasAge { INSTANCE; private int age; @Override public int getAge() { return age; } }
Con:
public interface HasAge { public int getAge(); }
No se puede hacer con estática ...
fuente
Los singleton (con estado) se utilizan generalmente para fingir que no se utilizan variables estáticas. Si en realidad no usa la variable públicamente estática, engañará a menos personas.
fuente
Elegiría la opción más simple y clara. Esto es algo subjetivo, pero si no sabe qué es lo más claro, elija la opción más corta.
fuente