모든 enum에는 ordinal이라는 메서드가 있는데, enum 자료형 안에서 enum 상수의 위치를 나타내는 정수값을 반환한다. 정말 되도록 이면 쓰지마라. 아래의 예제를 보자.
위의 코드는 유지보수 관점에서 보면 정말 안좋은 코드다. 상수 순서를 변경하는 순간 numberOfMusicians 메서드는 깨지고 만다. 게다가 이미 사용한 정수에 값에 대응되는 새로운 enum 상수를 정의하는 것은 아예 불가능하다. enum 상수에 연계되는 값을 ordinal을 사용해 표현하지 말고, 그런 값이 필요하다면 그 대신 객체 필드에 저장해야 한다는 것.
'개발서적 > 이펙티브자바' 카테고리의 다른 글
[열거형과 어노테이션]규칙33. ordinal을 배열 첨자로 사용하는 대신 EnumMap을 이요하라 (0) | 2017.05.03 |
---|---|
[열거형과 어노테이션]규칙32. 비트 필드대신 EnumSet을 사용하라 (0) | 2017.05.03 |
[열겨형과 어노테이션]규칙30. int 상수 대신 enum을 사용하라 (0) | 2017.05.03 |
[제네릭]규칙29. 형 안전 다형성 컨테이너를 쓰면 어떨지 따져보라 (0) | 2017.05.03 |
[제네릭]규칙28. 한정적 와일드카드를 써서 API유연성을 높여라 (0) | 2017.05.03 |