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
Linda Hamiltonoriginal
2024-12-22 21:26:171018parcourir

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
}

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!

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