Erstellen von Arrays generischer Klassen
Beim Versuch, ein Array einer generischen Klasse wie ArrayList
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!