Java에서 List<String>[] 생성은 안 되는데 일부 wildcard 배열은 가능합니다. 런타임 타입 검사와 어떤 관계가 있나요?
꼬리 질문을 독립 문항으로 확장했습니다. 원래 문항에서 맥락 보기 →
잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?
답변과 점검 포인트 펼치기답변 접기
01
구두 답변
정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.
배열은 런타임 원소 타입 검사를 하므로 소거되는 구체 제네릭 타입의 배열을 일반적으로 생성할 수 없습니다. List<?>처럼 reifiable한 타입과 List<String>의 차이를 확인합니다.
배열 공변성과 제네릭 불공변성이 섞인 heap pollution을 설명합니다. unchecked cast로 경고를 지워도 실제 원소 계약이 보장되지는 않습니다. List 기반 표현과 경계 검증을 우선 검토합니다.
02
득점 포인트
이해가 드러나는 지점을 확인해 보세요.
- 배열은 런타임 원소 타입 검사를 하므로 소거되는 구체 제네릭 타입의 배열을 일반적으로 생성할 수 없습니다.
List<?>처럼 reifiable한 타입과List<String>의 차이를 확인합니다. - List 기반 표현과 경계 검증을 우선 검토합니다.
03
감점 포인트
놓치기 쉬운 조건과 오해를 짚어 보세요.
- 다음 핵심 구분을 반대로 설명하거나 성립 조건을 생략한다: 배열은 런타임 원소 타입 검사를 하므로 소거되는 구체 제네릭 타입의 배열을 일반적으로 생성할 수 없습니다.
04
더 파고들 거리
하나 더 질문하며 이해의 범위를 넓혀 보세요.
득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.
원리부터 공부하고 싶다면
답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.