Maison  >  Article  >  Java  >  Voici quelques titres de style question basés sur votre article : * Pourquoi ne puis-je pas créer un tableau générique de LinkedLists en Java ? * Comment surmonter l'effacement des génériques et créer un tableau de LinkedLists en Java

Voici quelques titres de style question basés sur votre article : * Pourquoi ne puis-je pas créer un tableau générique de LinkedLists en Java ? * Comment surmonter l'effacement des génériques et créer un tableau de LinkedLists en Java

DDD
DDDoriginal
2024-10-28 12:08:30295parcourir

Here are a few question-style titles based on your article:

* Why Can't I Create a Generic Array of LinkedLists in Java?
* How to Overcome Generics Erasure and Create an Array of LinkedLists in Java
* Java's Limitation: Why Direct Creation of a Generic

Résolution de l'erreur lors de la création d'un tableau de LinkedLists

En Java, il n'est pas possible de créer directement un tableau générique de LinkedLists. Cela est dû à une limitation du langage Java connue sous le nom d'« effacement générique ». Lors de la compilation du code Java, le compilateur efface les informations de type pour les types génériques comme LinkedList. Par conséquent, la machine virtuelle Java (JVM) ne voit que les types bruts comme LinkedList lors de l'exécution du code.

Résoudre le problème

Pour résoudre ce problème, vous pouvez convertissez le type et faites la déclaration comme ceci :

<code class="java">myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];</code>

En convertissant le tableau en un type spécifique, vous indiquez explicitement au compilateur que vous souhaitez qu'il s'agisse d'un tableau de LinkedLists contenant des objets IntegerNode. Le caractère générique (?) dans la déclaration indique que le type spécifique des éléments dans le tableau LinkedList n'est pas pertinent, tant qu'il s'agit d'objets de n'importe quel type.

Explication de la compatibilité de la déclaration

La déclaration de LinkedList[] myMatrix; est compatible avec l'instruction d'affectation dans votre code car le compilateur suppose initialement que l'argument de type générique est un type inconnu. Bien que vous ne puissiez pas instancier directement un tableau générique, le compilateur permet de faire la déclaration pour tenir compte de la possibilité de créer un tableau de LinkedLists au moment de l'exécution.

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