Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- C++
- Flutter TextField
- NDK
- android architecture component
- Android P
- Rxjava2
- flutter firestore
- Kotlin
- 안드로이드
- mfc
- RxAndroid
- C/C++
- FLUTTER
- Django REST
- 알고리즘
- 코틀린
- kodility
- livedata
- 프로그래머스
- dart
- UWP
- RxJava
- Android
- android push
- Python
- 안드로이드 구글맵
- C
- Django REST framework
- Django REST Android
- Java
Archives
- Today
- Total
개발하는 두더지
[Effective Java 규칙31] enum ordinal 대신 객체 필드를 사용하라 본문
[Effective Java 규칙31] enum ordinal 대신 객체 필드를 사용하라
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다.
Enum에는 enum 상수에 포함되는 정수를 구할 수 있는 메서드가 있다.
enum Ensemble {
SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET,
SEPTET, OCTET, NONET, DECTET;
int numberOfMusicians() { return ordinal() + 1; }
}
바로 oridinal() 이라는 메서드인데 더이상 enum이 변경되지않고 간단하게 사용할때는 문제는 딱히 없어보인다.
하지만 enum 상수 사이에 값을 추가하거나 이미 사용한 정수에 대응되는 새로운 enum 상수값을 사용할 수가 없는 단점이 있다.
그래서 enum 상수에 해당되는 값을 ordinal() 을 사용하지말고 객체필드에 따로 저장해야 한다.
enum Ensemble {
SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5), SEXTET(6),
SEPTET(7), OCTET(8), DOUBLE_QUARTET(8), NONET(9), DECTET(10);
private final int numberOfMusicians;
Ensemble(int size) { this.numberOfMusicians = size; }
int numberOfMusicians() { return numberOfMusicians; }
}
'Java,Android' 카테고리의 다른 글
[Effective Java 규칙33] ordinal을 배열 인덱스로 사용하는 대신 EnumMap을 이용하라 (0) | 2018.10.12 |
---|---|
[Effective Java 규칙32] 비트 필드(bit field) 대신 EnumSet을 사용해라 (0) | 2018.10.12 |
[Effective Java 규칙30] int 상수 대신 enum을 사용하라 (0) | 2018.10.08 |
[Effective Java 규칙29] 형 안전 다형성 컨테이너를 쓰면 어떨지 따져보라 (0) | 2018.10.08 |
[Effective Java 규칙28] 한정적 와일드카드를 써서 API 유연성을 높여라 (0) | 2018.10.05 |
Comments