En Java, l'utilisation de génériques et de tableaux peut poser des défis. Bien que certaines constructions puissent sembler valides, le compilateur peut soulever des objections.
Considérez l'exemple suivant :
<code class="java">ArrayList<Key> a = new ArrayList<Key>(); // Compiles without issue</code>
Cependant, lorsque vous tentez de créer un tableau de listes génériques :
<code class="java">ArrayList<Key>[] a = new ArrayList<Key>[10]; // Compiler error</code>
Cette erreur est due à un effacement de type. Pour le résoudre, on peut soit convertir le tableau comme suit :
<code class="java">ArrayList<Key>[] a = (ArrayList<Key>[]) new ArrayList[10];</code>
Ou utiliser une liste de listes :
<code class="java">ArrayList<ArrayList<Key>> b = new ArrayList<ArrayList<Key>>(); // No error</code>
Pour comprendre la justification de ces observations, il est crucial de comprendre Le mécanisme d'effacement de type de Java. Lors de la compilation, les informations de type sont effacées pour les types génériques, les traitant ainsi comme leurs homologues bruts. En effet, les tableaux ne peuvent fonctionner qu'avec des types bruts.
Dans le premier exemple, ArrayList
L'approche de liste de listes élimine ces problèmes car ArrayList n'est pas un tableau et ne souffre donc pas des mêmes restrictions.
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!