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?

questionAnswers(3)

yourAnswerToTheQuestion