>Java >java지도 시간 >Java에서 일반 배열을 직접 생성할 수 없는 이유는 무엇입니까?

Java에서 일반 배열을 직접 생성할 수 없는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-05 00:17:11871검색

Why Can't I Directly Create Generic Arrays in Java?

제네릭을 사용하여 배열 생성

문제:
배열 생성 시 제네릭의 제한 사항과 기본 항목 이해 이유 이유.

컨텍스트:
배열과 제네릭은 구체화 및 유형 적용을 포함하여 근본적인 차이점이 있습니다.

설명:

배열 vs. 제네릭:

  • 배열은 구체화됩니다. 즉, 런타임 시 유형 정보를 유지합니다.
  • 제네릭은 구체화되지 않습니다. 즉, 컴파일 중에 유형 정보가 지워집니다.

종류 공분산:

  • 배열은 공변적이므로 상위 클래스 유형의 배열을 하위 클래스 유형의 배열에 할당할 수 있습니다.
  • 제네릭은 불변이므로 이러한 할당은 금지됩니다.

강제 유형 확인:

  • 제네릭은 런타임 오류를 방지하기 위해 컴파일 타임에 더 강력한 유형 검사를 제공합니다.
  • 어레이는 런타임에 Array Store Check를 사용하여 유형 호환성을 강화합니다.

일반 배열 문제 생성:

  • 런타임 유형 정보를 알 수 없어 ArrayStoreException이 발생할 수 있으므로 일반 구성 요소 유형으로 배열을 생성하는 것은 안전하지 않습니다.

제한되지 않은 와일드카드에 대한 예외 유형:

  • 배열 제한되지 않은 와일드카드 유형(예: List[])은 재구성 가능하고 모든 객체 할당을 허용하므로 허용됩니다.

E[]에 대한 해결 방법:

  • Array#newInstance() 메서드를 사용하여 원하는 일반 유형의 배열을 생성하고 이를 다음과 같이 캐스팅합니다. 필요합니다.

결론:

배열과 제네릭 간의 근본적인 동작 차이로 인해 일반 배열 생성이 제한됩니다. 배열 및 제네릭을 사용할 때는 기본 유형 적용 메커니즘과 안전에 미치는 영향을 신중하게 고려해야 합니다.

위 내용은 Java에서 일반 배열을 직접 생성할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.