EnumSet(2)
-
[Item 38] 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라
열거 타입은 앞서 말했든 타입 안전 열거 패턴보다 우수하다. 단, 예외가 있다면 타입 안전 열거 패턴은 확장할 수 있으나 열거 타입은 그럴 수 없다는 점이다. 기반 타입과 확장된 타입들의 원소 모두를 순회할 방법도 마땅치 않고, 확장성을 높이려면 고려할 요소가 늘어나 설계와 구현이 더 복잡해진다. 그런데 확장할 수 있는 열거 타입이 어울리는 쓰임이 있는데 바로 연산 코드(operation code 혹은 opcode)다. 연산 코드의 각 원소는 특정 기계가 수행하는 연산을 뜻한다. 이따금 API가 제공하는 기본 연산 외에 사용자 확장 연산을 추가할 수 있도록 열어줘야 할 때가 있다. 열거 타입으로 이 효과를 내는 방법이 있는데, 연산 코드용 인터페이스를 정의하고 열거 타입이 이 인터페이스를 구현하게 하면 ..
2022.06.26 -
[Item 36] 비트 필드 대신 EnumSet을 사용하라.
열거한 값들이 주로 (단독이 아닌) 집합으로 사용될 경우, 예전에는 각 상수에 서로 다른 2의 거듭제곱 값을 할당한 정수 열거 패턴을 사용해 왔다. 비트 필드 열거 상수 public class Text { public static final int STYLE_BOLD = 1
2022.06.26