Maison > Java > javaDidacticiel > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-03 20:28:02
original
397 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal