배열과 리스트의 차이

차이점1

배열의 문제점

// 배열 사용 시 런타임에서 예외를 던짐
Object[] objectArray = new Long[1];
objectArray[0] = "타입이 달라 넣을 수 없음";

// 리스트 사용 시 컴파일할 때 잘못됨을 바로 알 수 있음
List<Object> ol = new ArrayList<Long>();
ol.add("타입이 달라 넣을 수 없음");

차이점2

제네릭 배열을 만들지 못하는 이유

List<String>[] stringLists = new List<String>[1]; // 제네릭 배열을 생성할 수 있다고 가정
List<Integer> intList = List.of(42);
Object[] objs = stringLists;
objs[0] = intList;
String s = stringLists[0].get(0);

→ 위와 같은 일을 방지하기 위해 컴파일 오류가 필요