enum właściwości i efekty uboczne
Mam pytanie dotyczące enum (może to być proste, ale ....). To jest mój program:
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;
}
}
a moje pytanie brzmi: dlaczego wyjście jest
hello
hello
i nie
hello
?
Jak kod „idzie” dwa razy do konstruktora? Kiedy pierwszy raz i kiedy jest drugi? I dlaczego konstruktor enum nie może być publiczny? Czy to powód, dla którego drukuje się dwa razy, a nie tylko raz?