Book/Effective Java
Effective Java - Item 35. ordinal 메서드 대신 인스턴스 필드를 사용하라
성공종
2023. 5. 28. 15:42
ordinal method는 enum type의 상수가 몇번째 존재하는지를 반환하는 함수이다.
public enum Ensemble {
SOLO, DUET, TRIO, QUARTET, QUINTET,
SEXTET, SEPTET, OCTET, NONET, DECTET;
public int numberOfMusicians(){return ordinal() + 1;}
}
합주단의 종류를 나열한 enum이다. 각각 1명부터 10명까지 합주단의 수에 따라 종류가 달라진다.
각각 index가 0 ~ 9까지 매칭되어 있기 때문에 ordinal() 메소드로 1 ~ 10까지의 값을 반환할 수 있다.
배열에서 어떤 값을 얻어내기 위해 그 배열의 인덱스 값을 참조한다는 뜻이다.
이럴 경우에 중복 된 값을 가질 수 없고, {ex) double quartet -> 얘도 8명임} 값들이 연속적이지 않으면 내부를 띄엄 띄엄 띄워둬야한다.
// 인스턴스 필드에 정수 데이터를 저장하는 열거 타입 (222쪽)
public enum Ensemble {
SOLO(1), 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; }
}
위와 같이 상수에 연결된 값은 인스턴스 내부에 저장하자.