Item28 - 배열보다는 리스트를 사용하라
배열과 제네릭 타입에는 중요한 차이가 두 가지 있다. 1. 배열은 공변, 제네릭은 불공변 //String이 Object의 하위 타입이므로 String[]이 Object[]의 하위 타입이 된다 //공변! Object[] anything = new String[10]; //String이 Object의 하위 타입이므로 List이 List의 하위 타입이 된다 X //불공변! List names = new ArrayList(); 얼핏 보기에는 제네릭에 문제가 있는 것 처럼 보이지만 그렇지 않다. 어느쪽이든 String용 저장소에 Integer 데이터 타입같은 다른 타입을 넣을 수 없다. 배열은 런 타임에 알 수 있지만 리스트를 사용하면 컴파일할 때 바로 알 수 있다. 2. 배열은 실체화 되지만, 제네릭은 실체화 ..
2023.12.05