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