열거 자료형 원소들이 주로 집합에 사용될 경우, 전통적으로는 INT ENUM 패턴을 이용했다. 아래와 같이 하면 상수들을 집합에 넣을 때 비트별로 OR연산을 사용할 수 있다.

 집합을 비트 필드로 나타내면 비트 단위 산술 연산을 통해 합집합이나 교집합 등의 집합 연산도 효율적으로 할 수 있다. 하지만 위와 같은 코드는 int enum 패턴과 똑같은 단점들을 가지고 있다. 따라서 EnumSet이라는 클래스가 있는데, 이 클래스를 사용하면 특정한 enum 자료형의 값으로 구성된 집합을 효율적으로 표현할 수 있다. 


 appleyStyles 메서드에 EnumSet 객체를 전달하는 클라이언트 코드는 아래와 같다. EnumSet에는 정적 팩터리 메서드가 다양하게 준비되어 있어서 여러개중 선택해서 사용하면 된다.

요약

열거 자료형에 집합에 사용해야 할떄는 EnumSet을 사용하여 구현하도록 하자.



+ Recent posts