본문 바로가기

Dev Book Review/Effective Java

[Effective Java] item 35. ordinal 메서드 대신 인스턴스 필드를 사용하라

728x90

1. ordinal 메서드를 잘못쓸 때

ordinal 메서드 : 해당 상수가 그 열거 타입에서 몇 번째 위치인지 반환하는 메서드

  • 상수 선언 순서를 바꾸면 오동작한다.
  • 이미 사용중인 정수와 값이 같은 상수는 추가할 수 없다.
  • 중간에 값을 비울 수 없다 : 값을 비우기 위한 더미(dummy) 상수 추가

2. 해결 방법

열거 타입 상수에 연결 된 값을 ordinal 메서드로 얻지 말고 인스턴스 필드에 저장하라.

3. Enum API 문서

이 메서드는 EnumSet과 EnumMap과 같이 열거 타입 기반의 범용 자료 구조에 쓸 목적으로 설계 되었다.