핵심 정리 배열과 제네릭에는 매우 다른 타입 규칙이 적용된다. 배열은 공변이고 실체화되는 반면, 제네릭은 불공변이고 타입 정보가 소거된다. 그 결과 배열은 런타임에는 타입 안전하지만 컴파일타임에는 그렇지 않다. 제네릭은 반대다. 그래서 둘을 섞어 쓰기란 쉽지 않다. 둘을 섞어 쓰다가 컴파일 오류나 경고를 만나면, 가장 먼저 배열을 리스트로 대체하는 방법을 적용해보자. 배열 제네릭 공변 불공변 실체화 타입 정보 소거 런타임 - 타입 안전 런타임 - 불안전 컴파일타임 - 불안전 컴파일타임 - 안전 배열과 제네릭 타입의 차이 배열은 공변(covariant)이다. Sub가 Super의 하위 타입이라면 배열 Sub[ ]는 배열 Super[ ]의 하위 타입이 된다(공변, 즉 함께 변한다는 뜻이다). 반면, 제네릭은..