제네릭 매개변수화 타입은 불공변 앞서 아이템 28에서 언급했다시피 매개변수화 타입은 불공변(invariant)입니다. 매개변수화 타입은 오로지 한 타입을 지칭하며 해당 타입의 상속구조를 따지지 않습니다. ex) String은 Object의 하위 타입이지만 List은 List의 하위 타입이 아님 List에는 어떤 객체든 넣을 수 있지만 List에는 문자열만 넣을 수 있으므로 List은 List가 하는 일을 제대로 수행하지 못하니 SOLID 원칙의 리스코프 치환 원칙에 어긋나 하위 타입이 될 수 없음 PECS(Producer-Extends, Consumer-Super) 하지만 때로는 불공변 방식보다 유연한 방식이 필요한데 아이템 29에서 다루었던 스택 클래스를 통해 이를 설명하겠습니다. 위 코드에 일련의 원..