Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas créer des tableaux de classes génériques en Java ?
Création de tableaux de classes génériques
Lorsque vous tentez d'initialiser un tableau d'une classe générique, telle que ArrayList
Cause de l'erreur
Java ne prend pas en charge la création directe de tableaux de classes génériques en raison de problèmes de sécurité de type. Si cette fonctionnalité était autorisée, cela pourrait entraîner des erreurs de type potentielles, comme illustré dans l'exemple suivant :
<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>
Dans ce scénario, le tableau oa est affecté au tableau lsa, mais une valeur entière est alors ajouté à la liste à l'index 0. Lors de la récupération de l'élément à l'index 0 à partir de lsa et de la tentative de le convertir en String, une ClassCastException se produisait.
Solution de contournement
Pour Pour contourner cette limitation, envisagez d'utiliser une collection au lieu d'un tableau. Par exemple :
<code class="java">public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>>();</code>
Alternativement, une classe auxiliaire peut être créée pour agir comme type d'élément de tableau :
<code class="java">class MyObjectArrayList extends ArrayList<MyObject> { }</code>
<code class="java">MyObjectArrayList[] a = new MyObjectArrayList[2];</code>
En utilisant une collection ou une classe auxiliaire, le Java le compilateur peut garantir la sécurité des types et éviter les erreurs potentielles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!