propriedades de enum e efeitos colaterais
Eu tenho uma pergunta sobre o enum (pode ser simples, mas ....). Este é o meu 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;
}
}
e minha pergunta é: Por que a saída é
hello
hello
e não
hello
?
Como o código está "indo" duas vezes para o construtor? Quando é a primeira vez e quando é a segunda? E por que o construtor enum não pode ser público? É a razão pela qual imprime duas vezes e não apenas uma vez?