아이템 35. ordinal 메서드 대신 인스턴스 필드를 사용하라 #94
-
아이템 35. ordinal 메서드 대신 인스턴스 필드를 사용하라열거 타입 상수의 ordinal 메서드열거 타입 상수의 특징
ordinal 메서드 사용의 유혹
ordinal 메서드 사용의 문제점public enum Ensemble {
SOLO, DUET, TRIO, QUARTET, QUINTET,
SEXTET, SEPTET, OCTET, NONET, DECTET;
public int numberOfMusicians() {
return ordinal() + 1;
}
}
해결책
ordinal 메서드 -> 인스턴스 필드에 저장/**
* @author : 조재철
* @since 1.0
*/
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(1), TRIPLE_QUARTET(12);
private final int numberOfMusicians;
Ensemble(int size) {
this.numberOfMusicians = size;
}
public int numberOfMusicians() {
return this.numberOfMusicians;
}
} 열거 타입 상수에 연결된 값을 인스턴스 필드에 저장시 주의 사항
더 나아가서Enum의 API 문서에서 ordinal 메서드 설명
|
Beta Was this translation helpful? Give feedback.
Answered by
Irisation23
Jan 29, 2023
Replies: 1 comment 1 reply
-
정리해주신 내용 잘 봤습니다 😁 혹시 필드를 하나만 두고있는 enum 클래스의 경우 다르게 관리하고 있는 내용은 없을까에 대해 궁금해서 찾아보니
@JoisFe 님이 사용하셨던
|
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
JoisFe
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
정리해주신 내용 잘 봤습니다 😁
혹시 필드를 하나만 두고있는 enum 클래스의 경우 다르게 관리하고 있는 내용은 없을까에 대해 궁금해서 찾아보니
필드가 두개인 점은 다르지만, 배민에 계셨던 이동욱씨의 정리가 나오더군요.
@JoisFe 님이 사용하셨던
numberOfMusicians()
해당 메서드는 lombok의@Getter
로 대체해도 좋은 코드가 될 것 같다는 생각이 드네요!