Maison > Java > javaDidacticiel > Pourquoi ne puis-je pas créer des tableaux de classes génériques en Java ?

Pourquoi ne puis-je pas créer des tableaux de classes génériques en Java ?

Linda Hamilton
Libérer: 2024-11-03 20:51:29
original
354 Les gens l'ont consulté

Why Can't I Create Arrays of Generic Classes in Java?

Création de tableaux de classes génériques

Lorsque vous tentez d'initialiser un tableau d'une classe générique, telle que ArrayList, vous pouvez rencontrer une erreur indiquant "Création de tableau générique."

Cause de l'erreur

Java ne prend pas en charge la création directe de tableaux de classes génériques en raison de problèmes de sécurité de type. Si cette fonctionnalité était autorisée, cela pourrait entraîner des erreurs de type potentielles, comme illustré dans l'exemple suivant :

<code class="java">List<String>[] lsa = new List<String>[10]; // illegal
Object[] oa = lsa;  // OK because List<String> is a subtype of Object
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[0] = li;
String s = lsa[0].get(0);</code>
Copier après la connexion

Dans ce scénario, le tableau oa est affecté au tableau lsa, mais une valeur entière est alors ajouté à la liste à l'index 0. Lors de la récupération de l'élément à l'index 0 à partir de lsa et de la tentative de le convertir en String, une ClassCastException se produisait.

Solution de contournement

Pour Pour contourner cette limitation, envisagez d'utiliser une collection au lieu d'un tableau. Par exemple :

<code class="java">public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>>();</code>
Copier après la connexion

Alternativement, une classe auxiliaire peut être créée pour agir comme type d'élément de tableau :

<code class="java">class MyObjectArrayList extends ArrayList<MyObject> { }</code>
Copier après la connexion
<code class="java">MyObjectArrayList[] a = new MyObjectArrayList[2];</code>
Copier après la connexion

En utilisant une collection ou une classe auxiliaire, le Java le compilateur peut garantir la sécurité des types et éviter les erreurs potentielles.

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