비트 필드 열거 상수
열거한 값들이 주로 집합으로 사용되는 경우, 각 상수에 서로 다른 2의 거듭제곱 값을 할당한 정수 열거 패턴
public class Text {
public static final int STYLE_BOLD = 1 << 0;
public static final int STYLE_ITALIC = 1 << 1;
// 매개변수 styles는 0개 이상의 STYLE_* 상수를 비트별 OR한 값
public void applyStyles(int styles) { ... }
}
text.applyStyles(STYLE_BOLD | STYLE_ITALIC); // 비트 필드
- 비트필드: 비트별 OR을 사용해 여러 상수를 하나로 모은 집합, 집합 연산을 효율적으로 수행 가능하지만 해석하기 어렵고 정수 열거 상수의 단점을 모두 갖고 있음
EnumSet
public class Text {
public enum Style { BOLD, ITALIC }
// EnumSet이 가장 좋음
public void applyStyles(Set<Style) styles) { ... }
}
text.applyStyles(EnumSet.of(Style.BOLD, Style.ITALIC));
반응형
'스터디 > 이펙티브 자바' 카테고리의 다른 글
[Effective Java] Item38. 확장가능한 열거 타입이 필요하면 인터페이스 (0) | 2022.06.26 |
---|---|
[Effective Java] Item 37. ordinal 인덱싱 대신 EnumMap (0) | 2022.06.26 |
[Effective Java] Item35. ordinal 대신 인스턴스 필드 (0) | 2022.06.26 |
[Effective Java] Item34. int 대신 Enum (0) | 2022.06.19 |
[Effective Java] Item33. 타입 안전 이종 컨테이너를 고려 (0) | 2022.06.19 |