Heim  >  Artikel  >  Java  >  Warum kann ich in Java kein Array von LinkedLists erstellen?

Warum kann ich in Java kein Array von LinkedLists erstellen?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 01:42:03913Durchsuche

Why Can't I Create an Array of LinkedLists in Java?

LinkedList-Array kann in Java nicht instanziiert werden

In diesem Thread stößt der Entwickler beim Versuch, ein Array von LinkedLists in Java zu erstellen, auf eine Herausforderung um Werte in einer dünn besetzten Matrix zu speichern. Die Fehlermeldung „Es kann kein generisches Array von LinkedList erstellt werden“ wirft zwei entscheidende Fragen auf:

  1. Was ist die Hauptursache für diesen Fehler?

    Die Hauptursache liegt in Javas Einschränkung gegen die Erstellung generischer Arrays von nicht-primitive Typen. Generics sind typsichere Mechanismen, die in Java 5 eingeführt wurden, um ClassCastException zur Laufzeit zu verhindern. Beim Deklarieren eines Arrays generischer Typen wie LinkedList erfordert der Compiler eine explizite Typkonvertierung, um Java auf den spezifischen Typ des zu erstellenden Arrays aufmerksam zu machen.

  2. Warum Ist der Typ in der Array-Deklaration akzeptabel, aber nicht in der Erstellung?

    Die Array-Deklaration verwendet einen Rohtyp, LinkedList[], der den generischen Typparameter nicht angibt. Rohtypen sind untypisiert und erzwingen keine Typsicherheit. Beim Instanziieren des Arrays benötigt der Compiler jedoch die Bereitstellung eines bestimmten Typparameters, bei dem der Fehler auftritt.

Lösung:

Um dieses Problem zu beheben, muss eine Typumwandlung durchgeführt werden. Der korrigierte Code sollte wie folgt aussehen:

myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];

Die Umwandlung (LinkedList[]) informiert den Compiler explizit darüber, dass das erstellte Array ein Array von LinkedList ist, das IntegerNode-Elemente enthält. Dadurch kann das generische Array ordnungsgemäß instanziiert werden.

Das obige ist der detaillierte Inhalt vonWarum kann ich in Java kein Array von LinkedLists erstellen?. 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