Chapter 12. Enum
- 열거형 정의 방법은 다양하다.
- Enum Direction { EAST, SOUTH, WEST, NORTH }
- 열거형 상수간에 비교에는 ==을 사용할 수 있다.
- Equals() 가 아닌 ==로 비교가 가능하다는 것은 그만큼 빠른 성능을 제공한다는 것이다.
compareTo()는 왼쪽이 크면 양수 오른쪽이 크면 음수 같으면 0을 반환한다.
Switch문에도 활용 가능하다.
Void move(){
switch (dir) {
case EAST : x++;
break;
case WEST : x—;
break;
case SOUTH : y++;
break;
case NORTH : y—;
break;
}
}
Enum Direction{
EAST(1, “>”), SOUTH(2, “V”), WEST(3, “<“), NORTH(4, “^”);
…..
}
즉, 열거형을 사용하는 장점에 코드가 좀더 깔끔해진다는 것 뿐인가?
열거형의 활용법을 고민해봐야 되겠다.
열거형에 추상 메소드를 추가해 열거형 상수가 해당 메소드를 만들도록 강제할수도 있다.
내부적으로 모든 열거형은 추상 메소드 Enum 클래스의 자손이고 각각의 상수는 각각 한개의 객체이다.
내부적으로 열거형은
<T extends Enum<T>>
를 제네릭 타입으로 가지고 있고 비교를 위해Comparable<T>
를 구현하고 있따.복잡한 상속과 구현간의 구조로 인해 열거형에 추상 메서드를 추가하면 각 열거형 상수가 추상 메서드를 구현하도록 강제하는 이유를 설명하고 있는데….
잘 이해되진 않는다. 추가 공부가 필요할 듯 하다.
출처 : 남궁성, 『 자바의 정석 3/E』, 도우출판(2016.1.27), chapter 12 인용.