Maison  >  Article  >  Java  >  Pourquoi les tableaux ne peuvent-ils pas contenir d'éléments génériques en Java ?

Pourquoi les tableaux ne peuvent-ils pas contenir d'éléments génériques en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 20:28:02398parcourir

Why Can't Arrays Hold Generic Items in Java?

Les tableaux peuvent-ils contenir des éléments génériques ?

Les types et les tableaux génériques peuvent interagir différemment en Java. Considérez le code suivant :

<code class="java">ArrayList<Key> a = new ArrayList<Key>();</code>

Ce code se compile avec succès, créant une ArrayList générique nommée a. Cependant, le code suivant ne parvient pas à se compiler :

<code class="java">ArrayList<Key>[] a = new ArrayList<Key>[10];</code>

Pourquoi ? Il semble que les tableaux et les génériques soient incompatibles. Pour comprendre cela, explorons l'effacement de type en Java.

Effacement de type : dans les coulisses

Lorsque Java compile, il effectue l'effacement de type, qui remplace les informations de type génériques par types bruts (Objet). Cela évite les erreurs telles que le placement d'une chaîne dans une liste d'entiers. Cependant, les tableaux nécessitent un type brut et les génériques ne peuvent pas être représentés comme des types bruts.

Résoudre le problème du tableau

Pour créer un tableau d'éléments génériques, vous pouvez explicitement convertit le tableau en type souhaité :

<code class="java">ArrayList<Key>[] a = (ArrayList<Key>[]) new ArrayList[10];</code>

Cette conversion indique au compilateur que le tableau doit être considéré comme un tableau de ArrayLists avec des éléments clés.

Liste des listes : le Exception

En Java, une liste de listes n'est pas considérée comme un tableau. Par conséquent, le code suivant est compilé sans conversion de type :

<code class="java">ArrayList<ArrayList<Key>> b = new ArrayList<ArrayList<Key>>();</code>

Cette distinction se produit car ArrayList est un type non-tableau.

Conclusion

Les tableaux et les types génériques ont des limitations en Java en raison de l'effacement de type. Cependant, en convertissant explicitement les tableaux en type générique souhaité ou en utilisant des listes de listes, on peut naviguer dans ces limitations et utiliser efficacement les types génériques dans les deux contextes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn