利用反射获取泛型

Posted geekdc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用反射获取泛型相关的知识,希望对你有一定的参考价值。

package com.duchong.aar.reflect.T;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

public class DemoT 

    public void test01(Map<String,Integer> map, List<String> list)
        System.out.println("DemoT.test01()");
    

    public Map<Integer,String> test02()
        System.out.println("DemoT.test02()");
        return null;
    

    public static void main(String[] args) 

        try 

            //获得指定方法参数泛型信息
            Method m = DemoT.class.getMethod("test01", Map.class,List.class);
            Type[] t = m.getGenericParameterTypes();
            for (Type paramType : t) 
                System.out.println("#"+paramType);
                if(paramType instanceof ParameterizedType)
                    Type[] genericTypes = ((ParameterizedType) paramType).getActualTypeArguments();
                    for (Type genericType : genericTypes) 
                        System.out.println("泛型类型:"+genericType);
                    
                
            

            //获得指定方法返回值泛型信息
            Method m2 = DemoT.class.getMethod("test02", null);
            Type returnType = m2.getGenericReturnType();
            if(returnType instanceof ParameterizedType)
                    Type[] genericTypes = ((ParameterizedType) returnType).getActualTypeArguments();

                    for (Type genericType : genericTypes) 
                        System.out.println("返回值,泛型类型:"+genericType);
                    

            


         catch (Exception e) 
            e.printStackTrace();
        



    

 

以上是关于利用反射获取泛型的主要内容,如果未能解决你的问题,请参考以下文章

注解和反射反射获取泛型反射获取注解

如何反射获取List<T> 中泛型的类型

java筑基.泛型,反射,注解-利用注解加反射练习

反射获取泛型信息

javajav 通过 反射 获取 泛型信息

c#的泛型,委托,反射是啥?