열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다. 원래 자바는 C언어와 달리 열거형이라는 것이 존재하지 않았으나 JDK1.5부터 새로 추가되었다. 자바의 열거형은 C언의 열거형보다 더 향상된 것으로 열거형이 갖는 값뿐만 아니라 타입도 관리하기 떄문에 보다 논리적인 오류를 줄일 수 있다.
열거형을 정의하는 방법은 간단하다. 다음과 같이 괄호 {} 안에 상수의 이름을 나열하기만 하면 된다.
enum 열거형이름 { 상수명1, 상수명2 ... }
예를 들어 동서남북 4방향을 상수로 정의하는 열거형 Direction은 다음과 같다
enum Direction {EAST,WEST,SOUTH,NORTH}
이 열겨형에 정의된 상수를 사용하는 방법은 '열거형이름.상수명'이다. 클래스의 static 변수를 참조하는 것과 동일하다.
class Unit{
int x,y; //유닛의 위치
Direction dir; //열거형을 인스턴스 변수로 선언
void init(){
dir = Direction.EAST; //유닛의 방향을 EAST로 초기화
}
}
열거형 상수간의 비교에는 '=='를 사용할 수 있다. equals()가 아닌 '=='로 비교가 가능하다는 것은 그만큼 빠른 성능을 제공한다는 얘기다.
그러나 '<', '>'와 같은 비교연산자는 사용할 수 없고 compareTo()는 사용가능하다.
Enum을 사용해 우리가 얻을수 있는 이점은 다음과 같습니다.