>  기사  >  Java  >  귀하의 기사를 기반으로 한 몇 가지 질문 스타일 제목은 다음과 같습니다. * Java에서 LinkedList의 일반 배열을 만들 수 없는 이유는 무엇입니까? * 제네릭 삭제를 극복하고 Java에서 LinkedList 배열을 만드는 방법

귀하의 기사를 기반으로 한 몇 가지 질문 스타일 제목은 다음과 같습니다. * Java에서 LinkedList의 일반 배열을 만들 수 없는 이유는 무엇입니까? * 제네릭 삭제를 극복하고 Java에서 LinkedList 배열을 만드는 방법

DDD
DDD원래의
2024-10-28 12:08:30295검색

Here are a few question-style titles based on your article:

* Why Can't I Create a Generic Array of LinkedLists in Java?
* How to Overcome Generics Erasure and Create an Array of LinkedLists in Java
* Java's Limitation: Why Direct Creation of a Generic

LinkedList 배열 생성 시 오류 해결

Java에서는 LinkedList의 일반 배열을 직접 생성하는 것이 불가능합니다. 이는 "일반 삭제"라고 알려진 Java 언어의 제한 때문입니다. Java 코드를 컴파일할 때 컴파일러는 LinkedList와 같은 일반 유형에 대한 유형 정보를 지웁니다. 결과적으로 JVM(Java Virtual Machine)은 코드를 실행할 때 LinkedList와 같은 원시 유형만 봅니다.

문제 해결

이 문제를 해결하려면 다음을 수행하십시오. 유형을 캐스팅하고 다음과 같이 선언합니다.

<code class="java">myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];</code>

배열을 특정 유형으로 캐스팅하면 해당 배열이 IntegerNode 개체를 포함하는 LinkedList의 배열이 되도록 의도한다는 것을 컴파일러에 명시적으로 알리는 것입니다. 선언의 와일드카드 문자(?)는 LinkedList 배열 내의 특정 유형의 요소가 모든 유형의 객체인 한 관련이 없음을 나타냅니다.

선언 호환성 설명

LinkedList[] myMatrix;의 선언 컴파일러는 처음에 일반 유형 인수가 알 수 없는 유형이라고 가정하기 때문에 코드의 대입문과 호환됩니다. 일반 배열을 직접 인스턴스화할 수는 없지만 컴파일러는 런타임에 LinkedList 배열을 생성할 가능성을 수용하기 위해 선언을 허용합니다.

위 내용은 귀하의 기사를 기반으로 한 몇 가지 질문 스타일 제목은 다음과 같습니다. * Java에서 LinkedList의 일반 배열을 만들 수 없는 이유는 무엇입니까? * 제네릭 삭제를 극복하고 Java에서 LinkedList 배열을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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