제네릭을 사용하여 배열 생성
문제:
배열 생성 시 제네릭의 제한 사항과 기본 항목 이해 이유 이유.
컨텍스트:
배열과 제네릭은 구체화 및 유형 적용을 포함하여 근본적인 차이점이 있습니다.
설명:
배열 vs. 제네릭:
- 배열은 구체화됩니다. 즉, 런타임 시 유형 정보를 유지합니다.
- 제네릭은 구체화되지 않습니다. 즉, 컴파일 중에 유형 정보가 지워집니다.
종류 공분산:
- 배열은 공변적이므로 상위 클래스 유형의 배열을 하위 클래스 유형의 배열에 할당할 수 있습니다.
- 제네릭은 불변이므로 이러한 할당은 금지됩니다.
강제 유형 확인:
- 제네릭은 런타임 오류를 방지하기 위해 컴파일 타임에 더 강력한 유형 검사를 제공합니다.
- 어레이는 런타임에 Array Store Check를 사용하여 유형 호환성을 강화합니다.
일반 배열 문제 생성:
- 런타임 유형 정보를 알 수 없어 ArrayStoreException이 발생할 수 있으므로 일반 구성 요소 유형으로 배열을 생성하는 것은 안전하지 않습니다.
제한되지 않은 와일드카드에 대한 예외 유형:
- 배열 제한되지 않은 와일드카드 유형(예: List>[])은 재구성 가능하고 모든 객체 할당을 허용하므로 허용됩니다.
E[]에 대한 해결 방법:
- Array#newInstance() 메서드를 사용하여 원하는 일반 유형의 배열을 생성하고 이를 다음과 같이 캐스팅합니다. 필요합니다.
결론:
배열과 제네릭 간의 근본적인 동작 차이로 인해 일반 배열 생성이 제한됩니다. 배열 및 제네릭을 사용할 때는 기본 유형 적용 메커니즘과 안전에 미치는 영향을 신중하게 고려해야 합니다.
위 내용은 Java에서 일반 배열을 직접 생성할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!