
package me.whiteship.chapter06.item35.anti_pattern;
public enum Ensemble {
SOLO, DUET, TRIO, QUARTET, QUINTET,
SEXTET, SEPTET, OCTET, NONET, DECTET;
public int numberOfMusicians() {
return ordinal() + 1;
}
}
ENUM은 순서의 기반대로 하는걸 알아야 되기 때문에 잘 모르고, ALPHABET 순서대로 하고 싶다라고 바꾸면 큰일이 나게 된다.
그래서 안티패턴이다.
필드와 메서드를 통해서 표현하는게 좋다.
package me.whiteship.chapter06.item35.best_practice;
// 인스턴스 필드에 정수 데이터를 저장하는 열거 타입 (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;
}
}
Ordinal을 사용하지 마라. 순서를 기대하지마라.