Enum은 상수가 정의되어 있는 위치를 반환하는 ordinal이라는 메서드를 제공한 다.
프로그래머가 직접 사용할 용도로 만들어진 메서드가 아니다.
Enum에 정의하는 상수들의 순서가 바뀔 수 있고, 상수를 삭제하거나, 추가할 수도 있다는 것을 주의해야 한다.
필드와 메서드를 정의하는 것이 좋다.
ordinal은 EnumSet과 EnumMap등 자바 내부에서 사용할 용도로 만들어진 것
**// Anti Pattern**
public enum Ensemble {
SOLO, DUET, TRIO, QUARTET, QUINTET,
SEXTET, SEPTET, OCTET, NONET, DECTET;
public int numberOfMusicians() {
return ordinal() + 1;
}
}
// Best Pattern
// 인스턴스 필드에 정수 데이터를 저장하는 열거 타입 (222쪽)
// field, method, constructor
public enum Ensemble {
**SOLO(1[size]),** DUET(2), TRIO(3), QUARTET(4), QUINTET(5),
SEXTET(6), SEPTET(7), OCTET(8), DOUBLE_QUARTET(8),
NONET(9), DECTET(10), TRIPLE_QUARTET(12);
private final int numberOfMusicians;
Ensemble(int size) {
this.numberOfMusicians = size;
}
public int numberOfMusicians() {
return numberOfMusicians;
}
}