Maison > Java > javaDidacticiel > Comment obtenir le type générique d'une « liste » Java à l'aide de Reflection ?

Comment obtenir le type générique d'une « liste » Java à l'aide de Reflection ?

Patricia Arquette
Libérer: 2024-12-16 15:05:15
original
294 Les gens l'ont consulté

How to Get the Generic Type of a Java `List` Using Reflection?

Comment obtenir le type générique de java.util.List

Considérez le code suivant :

List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();
Copier après la connexion

A une question fréquente se pose : existe-t-il une méthode simple pour récupérer le type générique du list?

Utiliser la réflexion

Si ces listes sont des champs d'une classe particulière, la réflexion peut être utilisée pour accéder à leurs types génériques :

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;

public class Test {

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

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

        Field stringListField = testClass.getDeclaredField("stringList");
        ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
        Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];
        System.out.println(stringListClass); // class java.lang.String

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

Approches alternatives

  • Pour les types de paramètres et les types de retour de méthodes, la réflexion peut également être utilisés.
  • Cependant, si les listes sont dans la même portée de la classe/méthode qui nécessite leurs types génériques, les connaître est redondant, car elles ont déjà été explicitement déclarées.

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