[Effective Java] 타입 안전 이종 컨테이너를 고려하라


[Effective Java] 타입 안전 이종 컨테이너를 고려하라

단일원소 컨테이너 제네릭은 Set<E>, Map<K, V> 등의 컬렉션과 ThreadLocal<T>, AtomicReference<T> 등의 단일원소 컨테이너에도 흔히 사용됨 이런 모든 쓰임에서 매개변수화되는 대상은 원소가 아닌 컨테이너 자신 따라서 하나의 컨테이너에서 매개변수화할 수 있는 타입의 수가 제한됨 Set<E>은 E 한 개, Map<K, V>는 K, V 2개가 필요한 식 더 유연한 수단 타입 안전 이종 컨테이너 패턴 컨테이너 대신 키를 매개변수화한 다음, 컨테이너에 값을 넣거나 뺄 때 매개변수화한 키를 함께 제공 이러면 제네릭 타입 시스템이 값의 타입이 키와 같음을 보장해 줌 타입 안전 이종 컨테이너 패턴 예시 타입별로 즐겨 찾는 인스턴스를 저장하고 검색할 수 있는 Favorites 클래스 각 타입의 Class 객체를 매개변수화한 Map의 Key 역할 사용 class의 클래스가 제네릭이기 때문이다. class 리터럴 타입은 Class가 아닌 Class<T>다. 컴파일타임 ...


#Class #Effectivejava #이펙티브자바 #자바 #제네릭 #타입안전이종컨테이너

원문링크 : [Effective Java] 타입 안전 이종 컨테이너를 고려하라