열거타입(2)
-
[Item 38] 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라
열거 타입은 앞서 말했든 타입 안전 열거 패턴보다 우수하다. 단, 예외가 있다면 타입 안전 열거 패턴은 확장할 수 있으나 열거 타입은 그럴 수 없다는 점이다. 기반 타입과 확장된 타입들의 원소 모두를 순회할 방법도 마땅치 않고, 확장성을 높이려면 고려할 요소가 늘어나 설계와 구현이 더 복잡해진다. 그런데 확장할 수 있는 열거 타입이 어울리는 쓰임이 있는데 바로 연산 코드(operation code 혹은 opcode)다. 연산 코드의 각 원소는 특정 기계가 수행하는 연산을 뜻한다. 이따금 API가 제공하는 기본 연산 외에 사용자 확장 연산을 추가할 수 있도록 열어줘야 할 때가 있다. 열거 타입으로 이 효과를 내는 방법이 있는데, 연산 코드용 인터페이스를 정의하고 열거 타입이 이 인터페이스를 구현하게 하면 ..
2022.06.26 -
[Item 34] int 상수 대신 열거 타입을 사용하라
상수 열거 패턴 public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD = 2; 위의 코드처럼 정수 , 상수를 한 묶음으로 모아서 선언해놓은 것이 정수 열거 패턴이다. 정수 열거 패턴의 단점 정수 열거 패턴에는 타입 안전을 보장할 수 없다. 예를 들어 오렌지를 건네야 할 메서드에 사과를 보내고 동등 연산자(==)로 ..
2022.06.19