영어인 enum 은 enumeration 의 줄임말인데, 번역하면 열거라는 뜻이고, 어떤 항목을 나열하는 것을 뜻한다.
"Enumeration"은 일련의 명명된 상수들의 집합을 정의하는 것을 의미하며, 프로그래밍에서는 이러한 상수들을 사용하여 코드 내에서 미리 정의된 값들의 집합을 나타낸다.
enum도 클래스의 한 종류이다. 따라서, 멤버 변수와 메소드를 가질 수 있다.
enum의 멤버 변수를 사용하는 메서드의 경우 enum 안에 선언하여 값을 반환하는 것이 좋은 구조이다.
values(): 모든 ENUM 상수를 포함하는 배열을 반환한다.valueOf(String name): 주어진 이름과 일치하는 ENUM 상수를 반환한다.name(): ENUM 상수의 이름을 문자열로 반환한다.ordinal(): ENUM 상수의 선언 순서(0부터 시작)를 반환한다.toString(): ENUM 상수의 이름을 문자열로 반환한다. name() 메서드와 유사하지만, toString() 은 직접 오버라이드 할 수 있다.ordinal()은 가급적 사용하지 않는 것이 좋다.
ordinal() 의 값은 가급적 사용하지 않는 것이 좋다. 왜냐하면 이 값을 사용하다가 중간에 상수를 선언하는 위치가 변경되면 전체 상수의 위치가 모두 변경될 수 있기 때문이다.