배열 vs 제네릭(리스트) 1. 공변 vs 불공변 (공변: 함께 변함) 배열은 공변이다. 즉, Sub가 Super의 하위 타입이라면 배열 Sub[]는 배열 Super[]의 하위 타입이 된다. 그렇기 때문에 다음은 문법 상 허용되는 배열 코드이다. Object[] objectArray = new Long[1]; objectArray[0] = "타입이 달라 넣을 수 없음"; // ArrayStoreException 발생 위 코드는 문법상 허용되어 컴파일 타임에 예외가 일어나지 않지만, 실제로 스트링이 배열에 들어갈 때 런타임 오류가 발생한다. 당연하게도 String은 Long 배열에 들어갈 수 없기 때문이다. 반면, 제네릭은 불공변이다. 서로 다른 두 제네릭 타입이 있을 때, 그 타입 간의 상속 관계와는 무..