Maison >Java >javaDidacticiel >Comment puis-je obtenir un littéral de classe pour un type générique en Java ?

Comment puis-je obtenir un littéral de classe pour un type générique en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-23 22:27:151007parcourir

How Can I Get a Class Literal for a Generic Type in Java?

Obtention d'un littéral de classe à partir d'un type générique en Java

Les littéraux de classe sont couramment utilisés pour représenter les types de manière statique. Cependant, des difficultés surviennent lorsqu'il s'agit de types génériques.

En règle générale, pour les types non génériques, les littéraux de classe peuvent être obtenus en utilisant la syntaxe Foo.class. Lors de l'application de cela à des types génériques comme List, un avertissement est généré en raison de l'absence de paramètres de type. Toute tentative d'ajout d'un caractère générique (?) pour autoriser des paramètres de type inconnus entraîne une erreur d'incompatibilité de type. De plus, l'utilisation de la syntaxe List.class provoque une erreur de syntaxe.

Le problème provient de la fonctionnalité d'effacement de type de Java. Les types génériques sont convertis en types bruts lors de la compilation, ce qui signifie que leurs arguments de type sont perdus au moment de l'exécution. Par conséquent, les types paramétrés n'ont pas leur propre représentation d'exécution et n'ont pas d'objets Class correspondants.

Par conséquent, il est impossible d'obtenir un littéral de classe pour un type paramétré tel que List en utilisant des méthodes comme List.class. En effet, Java élimine les informations de type générique lors de la compilation, ne laissant que la représentation de type brut.

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