enumeración de propiedades y efectos secundarios
Tengo una pregunta con respecto a la enumeración (puede ser una simple pero ...). Este es mi programa:
public class Hello {
public enum MyEnum
{
ONE(1), TWO(2);
private int value;
private MyEnum(int value)
{
System.out.println("hello");
this.value = value;
}
public int getValue()
{
return value;
}
}
public static void main(String[] args)
{
MyEnum e = MyEnum.ONE;
}
}
y mi pregunta es: ¿Por qué la salida es
hello
hello
y no
hello
?
¿Cómo está "yendo" el código dos veces al constructor? ¿Cuándo es la primera vez y cuándo es la segunda? ¿Y por qué el constructor enum no puede ser público? ¿Es la razón por la que se imprime dos veces y no solo una vez?