Heim > Java > javaLernprogramm > Hauptteil

Warum kann ich in Java keine Arrays generischer Klassen erstellen?

Linda Hamilton
Freigeben: 2024-11-03 20:51:29
Original
280 Leute haben es durchsucht

Why Can't I Create Arrays of Generic Classes in Java?

Erstellen von Arrays generischer Klassen

Beim Versuch, ein Array einer generischen Klasse wie ArrayList zu initialisieren, kann es zu einem Problem kommen ein Fehler mit der Meldung „Generische Array-Erstellung“.

Fehlerursache

Java unterstützt aus Gründen der Typsicherheit nicht die direkte Erstellung von Arrays generischer Klassen. Wenn diese Funktionalität zulässig wäre, könnte dies zu potenziellen Typfehlern führen, wie im folgenden Beispiel dargestellt:

<code class="java">List<String>[] lsa = new List<String>[10]; // illegal
Object[] oa = lsa;  // OK because List<String> is a subtype of Object
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[0] = li;
String s = lsa[0].get(0);</code>
Nach dem Login kopieren

In diesem Szenario wird das oa-Array dem lsa-Array zugewiesen, dann jedoch ein Integer-Wert der Liste bei Index 0 hinzugefügt. Beim Abrufen des Elements bei Index 0 von lsa und beim Versuch, es in String umzuwandeln, würde eine ClassCastException auftreten.

Problemumgehung

Zu Um diese Einschränkung zu umgehen, sollten Sie die Verwendung einer Sammlung anstelle eines Arrays in Betracht ziehen. Zum Beispiel:

<code class="java">public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>>();</code>
Nach dem Login kopieren

Alternativ kann eine Hilfsklasse erstellt werden, die als Array-Elementtyp fungiert:

<code class="java">class MyObjectArrayList extends ArrayList<MyObject> { }</code>
Nach dem Login kopieren
<code class="java">MyObjectArrayList[] a = new MyObjectArrayList[2];</code>
Nach dem Login kopieren

Durch die Verwendung einer Sammlung oder Hilfsklasse, der Java Der Compiler kann die Typsicherheit gewährleisten und potenzielle Fehler verhindern.

Das obige ist der detaillierte Inhalt vonWarum kann ich in Java keine Arrays generischer Klassen erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!