처음에 주제가 의도한 바를 이해하지 못해서 해맸었다.
이 글이 조금 도움이 되었다.
왜 사용하는 건데???
열거한 값들이 주로 단독이 아니라 그룹(집합)으로 사용 될 때 만들어낸 기법 같은 것!
public class Text{
public static final int STYLE_BOLD = 1 << 0; //1
public static final int STYLE_ITALIC = 1 << 1; //2
public static final int STYLE_UNDERLINE = 1 << 2; //4
public static final int STYLE_STRIKETHROUGH = 1 << 3; //8
public void applyStyles(int styles) {
System.out.printf("Applying styles %s to text%n", styles);
}
}
단독이 아닌 그룹으로 사용하고 싶으니 비트 연산을 통한 비트 필드로 표현하자!
각 상수에 2의 거듭제곱 값을 할당한 정수 열거 패턴을 사용한 것
text.applyStyles(STYLE_BOLD | STLYE_ITALIC); // 0001 OR 0010 = 0011
이런식으로 표현할 수 있게한 것
어느 정도 직관적이긴 한다 😂
비트 필드 단점
정수 열거 패턴의 단점을 그대로 지닌다.
비트 값 필드가 출력되었을 때 해석이 어렵다.