Para utilizar un ejemplo contribuido en Java, aquí está el código:En Java, ¿cuándo se invoca el constructor para una constante enumerada?
enum Commands{
Save("S");
File("F");
private String shortCut;
private Commands(String shortCut){ this.shortCut = shortCut; }
public String getShortCut(){ return shortCut; }
}
Tengo el siguiente/código de piloto de pruebas:
public static void main(String args[]){
System.out.println(Commands.Save.getShortCut());
}
La pregunta es: En Java, cuando es el constructor de una constante enumerada invocada? En el ejemplo anterior, solo estoy usando la constante enumerada Save
. ¿Esto significa que se llama al constructor una vez para crear Save
solamente? ¿O ambos Save
y File
se construirán juntos independientemente?
¿Eso significa que cuando 'ClassLoader' carga la clase, se invoca Constructor de enum? o ¿el miembro que accede como Save and File invocará al constructor? ¿Qué pasa si no hay un constructor de argumentos? –
@MuhammadBabar Una clase se puede cargar sin inicializar. Entonces, no, significa que cuando la clase se inicializa, cada miembro se construye. Y, como dije, no importa si se hace referencia a un miembro; se construye cuando la clase se inicializa. Tu segunda pregunta no está clara. Si no se proporcionan argumentos para el miembro, debe haber un constructor no-arg definido, o la enumeración no se compilará. ¿Es eso lo que quieres decir? – erickson
Pero en enum nunca hacemos un nuevo SomeEnum() es decir, ¡no hay una inicialización explícita! En mi caso, enum tiene una sola variable, es decir, * instancia * y un constructor privado sin argumentos. ¿Cuándo se llama este constructor? –