Maison > Java > javaDidacticiel > le corps du texte

Puis-je créer un tableau d'un type paramétré en Java ?

Mary-Kate Olsen
Libérer: 2024-10-30 02:17:28
original
817 Les gens l'ont consulté

 Can I Create an Array of a Parameterized Type in Java?

Tableaux génériques en Java : une plongée complète

Les tableaux Java et les génériques peuvent sembler incompatibles à première vue. Alors que les génériques permettent la sécurité et la flexibilité des types, les tableaux en Java sont intrinsèquement covariants, ce qui signifie qu'ils conservent le type exact de leurs éléments au moment de l'exécution. Cela pose un défi lorsque vous essayez de créer des tableaux de types génériques.

Considérez l'extrait de code suivant :

<code class="java">public class Hash<T extends Comparable<String>> {
    private T[] hashTable;
    // ...
}</code>
Copier après la connexion

Ce code tente de créer un tableau d'objets génériques qui étendent Comparable. Cependant, Java ne permet pas de convertir un tableau Object en un tableau d'un type paramétré, comme le montre le message d'erreur qui apparaît lors de la compilation :

java.lang.Object; cannot be cast to [Ljava.lang.Comparable;
Copier après la connexion

Pour contourner ce problème, on peut utiliser le Array. Méthode newInstance() :

<code class="java">private Comparable[] hashtable;
// ...
hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);</code>
Copier après la connexion

Cependant, cette approche ne crée toujours pas de tableau du type paramétré. Les tableaux en Java sont de type sécurisé au moment de l'exécution, ils ne peuvent donc pas être convertis en un autre type à volonté.

Les génériques en Java subissent un effacement de type, où les paramètres de type sont supprimés lors de la compilation. Cela garantit que les tableaux conservent leurs types d’éléments spécifiques, empêchant ainsi la conversion involontaire. De ce fait, il n'est pas possible de créer un tableau d'un type paramétré spécifique.

Dans ce cas particulier, il est recommandé d'utiliser ArrayList à la place des tableaux. Les ArrayLists offrent un dimensionnement dynamique, une prise en charge des génériques et sont plus adaptées à la plupart des scénarios.

Pour une explication détaillée de ce problème, reportez-vous à la FAQ Java Generics : https://docs.oracle.com/javase/7 /docs/technotes/guides/generics/faq.html#Puis-je créer un tableau dont le type de composant est un type paramétré en béton

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!