Maison >Java >javaDidacticiel >Comment puis-je récupérer le type générique d'une liste Java à l'aide de Reflection ?

Comment puis-je récupérer le type générique d'une liste Java à l'aide de Reflection ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-21 15:41:18897parcourir

How Can I Retrieve the Generic Type of a Java List Using Reflection?

Récupération du type générique d'une liste Java

Lorsque vous travaillez avec des types génériques en Java, il peut être utile de récupérer la classe spécifique associée à un type générique. Prenons l'exemple suivant :

List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();

Dans ce scénario, nous souhaiterons peut-être accéder aux types de classe réels associés à ces listes, à savoir String et Integer. Heureusement, Java fournit un moyen de récupérer ces informations en utilisant la réflexion.

Utilisation de Reflection

En utilisant la méthode getDeclaredField, nous pouvons accéder au champ dans une classe qui contient la liste générique. À partir de là, nous pouvons obtenir le ParameterizedType du champ et extraire les informations de classe réelles. Voici un exemple :

Field stringListField = testClass.getDeclaredField("stringList");
ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];

Ce code attribue la classe objet à la variable stringListClass, permettant de déterminer le type générique de la liste. La même approche peut être utilisée pour récupérer le type générique du champ integerList.

Considérations alternatives

Si les listes sont définies dans le cadre d'une méthode, il n'est pas nécessaire de récupérer leur générique types explicitement. En effet, les informations de type sont facilement disponibles dans le contexte de la méthode.

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