Heim  >  Artikel  >  Java  >  Hier sind einige Titel im Fragestil, die auf Ihrem Artikel basieren: * Warum kann ich in Java kein generisches Array von LinkedLists erstellen? * So überwinden Sie das Löschen von Generics und erstellen ein Array von LinkedLists in Java

Hier sind einige Titel im Fragestil, die auf Ihrem Artikel basieren: * Warum kann ich in Java kein generisches Array von LinkedLists erstellen? * So überwinden Sie das Löschen von Generics und erstellen ein Array von LinkedLists in Java

DDD
DDDOriginal
2024-10-28 12:08:30301Durchsuche

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

Behebung des Fehlers beim Erstellen eines Arrays von LinkedLists

In Java ist es nicht möglich, ein generisches Array von LinkedLists direkt zu erstellen. Dies ist auf eine Einschränkung der Java-Sprache zurückzuführen, die als „Generics Erasure“ bekannt ist. Beim Kompilieren von Java-Code löscht der Compiler Typinformationen für generische Typen wie LinkedList. Daher sieht die Java Virtual Machine (JVM) beim Ausführen des Codes nur Rohtypen wie LinkedList.

Problem lösen

Um dieses Problem zu beheben, können Sie Folgendes tun Wandeln Sie den Typ um und machen Sie die Deklaration wie folgt:

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

Indem Sie das Array in einen bestimmten Typ umwandeln, teilen Sie dem Compiler explizit mit, dass es sich um ein Array von LinkedLists mit IntegerNode-Objekten handeln soll. Das Platzhalterzeichen (?) in der Deklaration gibt an, dass der spezifische Typ der Elemente im LinkedList-Array irrelevant ist, solange es sich um Objekte eines beliebigen Typs handelt.

Erklärung der Deklarationskompatibilität

Die Deklaration von LinkedList[] myMatrix; ist mit der Zuweisungsanweisung in Ihrem Code kompatibel, da der Compiler zunächst davon ausgeht, dass das generische Typargument ein unbekannter Typ ist. Während Sie ein generisches Array nicht direkt instanziieren können, ermöglicht der Compiler, dass die Deklaration die Möglichkeit berücksichtigt, zur Laufzeit ein Array von LinkedLists zu erstellen.

Das obige ist der detaillierte Inhalt vonHier sind einige Titel im Fragestil, die auf Ihrem Artikel basieren: * Warum kann ich in Java kein generisches Array von LinkedLists erstellen? * So überwinden Sie das Löschen von Generics und erstellen ein Array von LinkedLists in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn