Maison > Java > javaDidacticiel > Comment obtenir le type générique d'un java.util.List à l'aide de Reflection ?

Comment obtenir le type générique d'un java.util.List à l'aide de Reflection ?

Linda Hamilton
Libérer: 2024-12-22 21:26:17
original
1035 Les gens l'ont consulté

How to Get the Generic Type of a java.util.List using Reflection?

Comment obtenir le type générique d'une java.util.List

Pour récupérer le type générique d'une java.util.List donnée , on peut employer des techniques de réflexion lorsque lesdites instances de liste sont des champs au sein d'une classe. Voici comment procéder :

// Declare fields of type List<String> and List<Integer>
List<String> stringList = new ArrayList<>();
List<Integer> integerList = new ArrayList<>();

public static void main(String[] args) throws Exception {
    Class<Test> testClass = Test.class;

    // Obtain the Field object of the stringList field
    Field stringListField = testClass.getDeclaredField("stringList");
    // Determine the generic type of stringList using ParameterizedType
    ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
    // Retrieve the actual type argument (i.e., generic type) of stringListType
    Class<?> stringListClass = stringListType.getActualTypeArguments()[0];
    System.out.println(stringListClass); // class java.lang.String

    // Perform the same process for the integerList field
    Field integerListField = testClass.getDeclaredField("integerList");
    ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType();
    Class<?> integerListClass = integerListType.getActualTypeArguments()[0];
    System.out.println(integerListClass); // class java.lang.Integer
}
Copier après la connexion

Cette approche est également applicable aux types de paramètres et aux types de retour de méthodes. Cependant, il est important de noter que si les instances List sont dans la portée de la classe ou de la méthode où elles sont requises, il n'est pas nécessaire d'utiliser la réflexion car les types génériques sont explicitement déclarés.

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