Heim >Java >javaLernprogramm >Warum kann ich in Java keine Arrays generischer Klassen erstellen?

Warum kann ich in Java keine Arrays generischer Klassen erstellen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-03 20:51:29371Durchsuche

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>

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>

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

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

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!

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