class MyClass{
	enum Enum1 {A,B,C}
	
	enum Enum2{
		A(1), B(2), C(4);

		private int value;
		private Enum2(int value) {
			this.value = value;
		}
		public int getValue() {
			return this.value;
		}
	}
	
	public void printEnum() {
		System.out.println(Enum1.A); //A
		System.out.println(Enum1.B); //B
		System.out.println(Enum2.A.getValue()); //1
		System.out.println(Enum2.C.getValue()); //4
	}
}

 

 

Enum 내부의 상수들은... 의미상 상수처럼 쓸 수 있지만 사실 인스턴스이다....

enum 이 class 라고 생각하면 더 이해하기 편할 듯

 

위에 예제에서 Enum1 내부 A, B, C 는 사실 Enum1 자기 자체를 구현한 인스턴스들임.

Enum1 A = new Enum1();

Enum1 B = new Enum1();

Enum1 C = new Enum1();

 

그럼에도 불구하고 출력했을 때 왜 "A", "B" 가 나오는지는 모르겠음.

 

이와 동일하게, Enum2 내부 A, B, C 도 마찬가지로 Enum2 를 구현한 인스턴스들임.

Enum2 A = new Enum2(1);

Enum2 B = new Enum2(2);

Enum2 C = new Enum2(4);

 

Enum2 는 자체 생성자를 갖고있기 때문에,

생성자에 맞춰서 실행 한 것.

 

+ Recent posts