목록불공변 (1)
초보개발자 긍.응.성
(이펙티브 자바 3) 28. 배열보다는 리스트를 사용하라
배열과 제네릭 타입의 차이 배열 공변(covariant)이다 (Sub가 Super의 하위 타입이라면 배열 Sub[]는 배열 Super[]의 하위 타입이 된다) 런타임에도 자신이 담기로 한 원소 타입을 인지하고 확인한다. 제네릭 불공변(invariant)이다 타입 정보가 런타임에는 소거(erasure)된다. 원소타입을 컴파일 타임에만 검사하며 런타임에는 알 수 없다. 이러한 차이로 배열과 제네릭은 잘 어우러지지 못한다. 제네릭 배열은 만들 수 없는데 타입 안전하지 않기 때문이다. 실체화 불가 타입 (non-reifiable type) 실체화되지 않아서 런타임에는 컴파일타임보다 타입 정보를 적게 가지는 타입이다. E, List, List 같은 타입이 실체화 불가 타입에 해당된다. 제네릭 타입과 가변 인수 메..
책 정리/이펙티브 자바 3
2020. 11. 23. 00:46