Maison > Java > javaDidacticiel > le corps du texte

Pourquoi ne puis-je pas créer un tableau de génériques en Java ?

Barbara Streisand
Libérer: 2024-10-30 23:14:29
original
130 Les gens l'ont consulté

Why Can't I Create an Array of Generics in Java?

Tableaux génériques en Java

En Java, les génériques et les tableaux ne coexistent pas directement. Lorsque vous tentez de créer un tableau de génériques qui étendent un type comparable, une erreur peut survenir. La raison fondamentale en est que les génériques Java sont effacés lors de la compilation.

Considérez le code suivant :

<code class="java">public class Hash<T extends Comparable<String>> {
    private T[] hashTable;
    private int tableSize;

    Hash(int records, double load) {
        tableSize = (int)(records / loadFactor);
        tableSize = findNextPrime(tableSize);
        hashTable = (T[])(new Object[tableSize]);  // Error: Object cannot be cast to Comparable
    }
}</code>
Copier après la connexion

L'effacement de type de Java traite les tableaux comme covariants, ce qui signifie qu'ils conservent le type de leurs éléments. au moment de l'exécution. Par conséquent, un tableau d'un type générique n'est pas du même type qu'un tableau de son type comparable, et ce dernier ne peut pas être converti en premier.

Pour contourner ce problème, une solution de contournement consiste à utiliser Array.newInstance ():

<code class="java">private Comparable[] hashtable;

...

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

Cependant, cette approche a des limites. Le code hérité, les bibliothèques externes ou l'interopérabilité avec d'autres langages peuvent nécessiter de véritables tableaux génériques.

En fin de compte, il est généralement recommandé d'éviter d'utiliser des tableaux avec des génériques en Java. Envisagez plutôt d'utiliser des classes de collection comme ArrayList ou HashMap, qui offrent plus de flexibilité et de sécurité de type.

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!