JAVA 에서 상수로 표현하는 효과적인 문법이 enum 입니다. enum 은 클래스와 비슷한 방식으로 정의합니다.


enum EnumName{

ENUM_VALUE1, ENUM_VALUE2

}


위와 같이 정의하는 것이 일반적인 사용방법입니다. 사용하는 쪽에서는, EnumName.ENUM_VALUE1 처럼, 열거형명.열거형값으로 접근해서 사용하면 됩니다.


두 번째로는, 열거형을 진짜 클래스처럼 정의하는 방법입니다.


enum EnumName{

ENUM_VALUE1(1), ENUM_VALUE2(2)

private final int mEnumValue;

EnumName(int enumValue){

mEnumValue = enumValue;

}

public int getEnumValue(){

return mEnumValue;

}

}


정의는 위와 같은 방식으로 합니다. 클래스처럼 정의하기 때문에, 생성자도 있고 (생성자는 무조건 private 으로 인식함), 메소드도 있습니다. 또한, 멤버 변수도 있고 (mEnumValue) 실제 열거형 값들도 존재합니다. (ENUM_VALUE1, ENUM_VALUE2)


ENUM_VALUE1(1) 의 의미는, ENUM_VALUE 라는 열거형 값을 정의하면서 동시에 EnumName 이라는 클래스의 생성자를 호출하면서 1 을 매개변수로 넘기라는 것입니다. 즉, EnumName 형으로 ENUM_VALUE1 와 ENUM_VALUE2 가 각각 1, 2 라는 값으로 정의되는 것입니다.


열거형은, Enum 클래스를 상속하고 있어서, Enum 클래스의 메소드를 사용할 수 있습니다.또한, Enum 클래스는, Comparable 과 Serializable 인터페이스를 상속합니다. 따라서, compareTo 메소드도 overriding 되어 있고, 직렬화 / 역직렬화 또한 가능합니다.




(Enum 클래스 참고)

http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html

by kkikkodev 2015. 6. 25. 23:24