Enumeration

    확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 - [6장. 열거 타입과 애너테이션(아이템38)]

    📙 1. 열거 타입의 확장 타입 안전 열거 패턴과 달리 열거 타입은 확장할 수 없다. (이 점을 제외하고는 거의 모든 상황에서 열거 타입이 타입 안전 열거 패턴(typesafe enum pattern) 보다 우수하다.) 타입 안전 열거 패턴은 열거한 값들을 그대로 가져온 다음 값을 더 추가하여 다른 목적으로 쓸 수 있는 반면, 열거 타입은 그렇게 할 수 없다. 설계가 잘 못 된 것은 아니다. 하지만 다음과 같은 이유로 대부분 상황에서 열거 타입을 확장하는 건 좋지 않은 생각이기 때문이다 열거 타입을 확장할 수 없도록 설계한 것이다. 확장한 타입의 원소는 기반 타입의 원소로 취급하지만, 기반 타입의 원소를 확장한 타입의 원소로 취급할 수 없는 건 이상하기 때문이다. 기반 타입과 확장된 타입들의 원소 모두를..