brunch

You can make anything
by writing

C.S.Lewis

by 이승현 Jul 02. 2018

열거형(Enum)과 주석(Annotation)

#31 서수 대신 인스턴스 필드를 사용하자

Effective Java - 열거형(Enum)과 주석(Annotation)


#31 서수 대신 인스턴스 필드를 사용하자


서수란 순서를 매길 때 사용하는 수를 말합니다.


#01 ordinal 메서드


enum은 각 enum 상수의 위치를 서수로 반환하는 ordinal 메서드를 가지고 있습니다. 


아래처럼 ordinal 메서드를 이용하면 1부터 서수를 반환하는 numberOfMusicians 메서드를 만들 수 있습니다.

ordinal 메서드 서수는 0부터 시작합니다.


#02 Ensemble class


사실 이 코드는 동작에 아무런 문제가 없습니다.

하지만 순서를 변경하거나 추가/삭제한다면 신경 써야 할 부분이 많습니다.

배열에서 index를 기반으로 값을 추가, 삭제할 때 index를 재조정하는 문제와 비슷합니다.




상수의 순서를 ordinal 메서드에서 반환하는 서수가 아닌, 인스턴스 필드에 별도로 저장하면 됩니다.

이러면 상수의 순서를 변경하거나 추가/삭제하는 경우에도 신경 쓸 부분이 없습니다.


#03 Ensemble2 class




ordinal 메서드 주석을 보면 "대부분의 프로그래머들은 이 메서드를 이용하지 않을 것이다."라고 기재되어 있습니다.

EnumSet이나 EnumMap 같은 enum 기반 데이터 구조를 다루지 않는 이상 쓸 일이 없을 거 같습니다.


매거진의 이전글 열거형(Enum)과 주석(Annotation)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari