Effective Java 06 - item 35 -
in Programming Language on Java
ordinal 메서드 대신 인스턴스 필드를 사용하라
가급적이면 ordinal 메서드보다는 인스턴스 필드를 사용하는 편이 좋다.
그 이유는 상수 선언 순서를 바꾸는 순간 메소드가 제대로 동작하지 않기 때문에 ordinal() 메소드에 의존하기 보다는, 인스턴스 필드를 선언하여 사용하자.
public enum Ensemble {
SOLO, DUET, TRIO;
public int numberOfMusicians() { return ordinal() + 1; }
}
위는 잘못된 코드이다.
아래처럼 사용하도록 하자.
public enum Ensemble {
SOLO(1), DUET(2), TRIO(3);
private final int numberOfMusicians;
Ensemble(int size) {
this.numberOfMusicians = size;
}
}
Reference
이펙티브 자바 Effective Java 3/E
조슈아 블로크