Why?

배열은 런타임 시점에 타입 검사를 하지만, 제네릭 타입은 컴파일 시점에 타입 검사를 하기 때문에 타입 안정성을 가질 수 있다. 그래서 ClassCastException을 피할 수 있다.

아래 예제를 보면 어느 쪽이든 Long 타입에 String 타입의 데이터를 넣을 수는 없다. 다만, 배열에서는 이러한 오류(Exception) 사실을 런타임 시점에서 알 수 있고, 제네릭 타입은 컴파일 시점에서 알 수 있다는 차이를 가지고 있다.ㅏ

배열

예제 코드

Object[] objectArray = new Long[1];
objectArray[0] = "문자열 삽입"; 

오류 발생 시점; Rumtime

스크린샷 2024-12-11 오후 4.39.09.png

리스트

예제 코드

List<Object> ol = new ArrayList<Long>();
ol.add("문자열");

오류 발생 시점; Compile

스크린샷 2024-12-11 오후 4.38.37.png