In Java kann die Verwendung von Generika und Arrays eine Herausforderung darstellen. Während bestimmte Konstruktionen gültig erscheinen, kann der Compiler Einwände erheben.
Betrachten Sie das folgende Beispiel:
<code class="java">ArrayList<Key> a = new ArrayList<Key>(); // Compiles without issue</code>
Beim Versuch, ein Array generischer Listen zu erstellen:
<code class="java">ArrayList<Key>[] a = new ArrayList<Key>[10]; // Compiler error</code>
Dieser Fehler entsteht durch Typlöschung. Um das Problem zu lösen, kann man das Array entweder wie folgt umwandeln:
<code class="java">ArrayList<Key>[] a = (ArrayList<Key>[]) new ArrayList[10];</code>
Oder eine Liste von Listen verwenden:
<code class="java">ArrayList<ArrayList<Key>> b = new ArrayList<ArrayList<Key>>(); // No error</code>
Um die Gründe für diese Beobachtungen zu verstehen, ist es wichtig, sie zu verstehen Javas Typlöschmechanismus. Während der Kompilierung werden die Typinformationen für generische Typen gelöscht, sodass sie als ihre rohen Gegenstücke behandelt werden. Dies liegt daran, dass Arrays nur mit Rohtypen funktionieren können.
Im ersten Beispiel ist ArrayList
Der Listen-Listen-Ansatz beseitigt diese Probleme, da ArrayList kein Array ist und daher nicht denselben Einschränkungen unterliegt.
Das obige ist der detaillierte Inhalt vonWarum verursacht das Erstellen eines Arrays generischer Listen in Java einen Compilerfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!