열거형(Enum)
- enum은 관련된 상수들을 하나의 객체로 만든 것이다
- 열거 타입 자체가 클래스이며, 상수 하나당 자신의 인스턴스를 만들어
public static final
필드로 공개한다 - 열거 타입은 밖에서 접근할 수 있는 생성자를 제공하지 않으므로 사실상
final
이다. 따라서, 열거 타입 선언으로 만들어진 인스턴스는 딱 하나씩만 존재하게 된다싱글톤
- 모든 열거형의 조상은 Enum 클래스
- enum도 클래스 이기 때문에 필드와 메서드를 추가할 수 있다
public enum Direction {
EAST(1),
WEST(2),
SOUTH(-10),
NORTH(5);
private final int num;
Dircetion(int num) {
this.num = num;
}
}
Direction dir = Direction.EAST;
Direction dir = Direction.valueOf("EAST");
-
compareTo()
- 열거형 상수의 비교에 == 와 compareTo() 모두 사용 가능.
- compareTo()는
ordinal(
)로 계산함. - 비교연산자 <, > 는 사용 불가
Direction d1 = Direction.EAST; // ordinal() : 0
Direction d2 = Direction.SOUTH; // ordinal() : 2
int result1 = d1.compareTo(d2); // 0-2 = -2
int result2 = d2.compareTo(d1); // 2-0 = 2