Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas créer un tableau de LinkedLists en Java ?

Pourquoi ne puis-je pas créer un tableau de LinkedLists en Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 01:42:03986parcourir

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

Impossible d'instancier un tableau LinkedList en Java

Dans ce fil de discussion, le développeur rencontre un défi en tentant de créer un tableau de LinkedLists en Java pour stocker des valeurs dans une matrice clairsemée. Le message d'erreur « Impossible de créer un tableau générique de LinkedList » soulève deux questions cruciales :

  1. Quelle est la cause première de cette erreur ?

    La cause première réside dans la restriction de Java interdisant la création de tableaux génériques de types non primitifs. Les génériques sont des mécanismes de type sécurisé introduits dans Java 5 pour empêcher l'exécution de ClassCastException. Lors de la déclaration d'un tableau de types génériques, comme LinkedList, le compilateur nécessite une conversion de type explicite pour informer Java du type spécifique de tableau en cours de création.

  2. Pourquoi le type est-il acceptable dans la déclaration du tableau mais pas dans la création ?

    La déclaration du tableau utilise un type brut, LinkedList[], qui ne spécifie pas le paramètre de type générique. Les types bruts ne sont pas typés et n’appliquent pas la sécurité des types. Cependant, lors de l'instanciation du tableau, le compilateur nécessite qu'un paramètre de type spécifique soit fourni, c'est là que l'erreur se produit.

Solution :

Pour résoudre ce problème, un transtypage doit être effectué. Le code corrigé devrait ressembler à ceci :

myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];

Le cast (LinkedList[]) informe explicitement le compilateur que le tableau en cours de création est un tableau de LinkedList contenant des éléments IntegerNode. Cela permet au tableau générique d'être correctement instancié.

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