ordinal 메서드는 enum 선언에서 인스턴스의 위치(0부터 시작)를 돌려준다. 예를 들어 Size.MEDIUM.ordinal()은 1을 반환한다. 물론 이 방법을 사용할 때는 주의가 필요하다. 새 열거 상수를 중간에 삽입하면 위치가 이동해 값이 바뀌기 때문이다.
모든 E 열거 타입은 자동으로 Comparable<E>를 구현하므로 해당 열거 타입에 나열된 객체만을 상대로 비교할 수 있다. 순서 값(ordinal value)으로 비교된다.
Note ≣
기술적으로 E 열거 타입은 Enum<E>를 확장하며, Enum<E>에서 compareTo 메서드와 이 절에서 설명하는 다른 메서드들을 상속한다. 표 4-2에 Enum 클래스의 메서드를 정리했다.
▼ 표 4-2 java.lang.Enum<E> 클래스의 메서드
메서드 |
설명 |
String toString() String name() |
enum 선언에 지정한 대로 인스턴스의 이름을 반환한다. name 메서드는 final이다. |
int ordinal() |
enum 선언에서 인스턴스의 위치를 반환한다. |
int compareTo(Enum<E> other) |
이 인스턴스와 other를 순서 값으로 비교한다. |
static T valueOf(Class<T> type, String name) |
이름에 해당하는 인스턴스를 반환한다. 이 메서드 대신 열거 타입의 valueOf 또는 values 메서드를 사용한다. |
Class<E> getDeclaringClass() |
인스턴스를 정의한 클래스를 얻는다(인스턴스에 바디가 있으면 getClass()와 다른 결과를 반환한다). |
int hashCode() protected void finalize() |
이 메서드들은 각각 대응하는 Object 메서드를 호출하며, final이다. |
protected Object clone() |
CloneNotSupportedException을 던진다. |