свойства перечисления и побочные эффекты
У меня есть вопрос относительно enum (это может быть простой вопрос, но ....). Это моя программа:
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;
}
}
и мой вопрос: почему выход
hello
hello
и нет
hello
?
Как код "собирается" дважды в конструктор? Когда первый раз, а когда второй? И почему конструктор enum не может быть публичным? Это причина, почему он печатает дважды, а не только один раз?