test02(){ System.out.println(); return null; } public static void main(String[] args) throws NoSuchMethodException { Method method = Test09.class.getMethod("test01", Map.class, List.class); Method method1= Test09.class.getMethod("test02"); Type[] genericParameterTypes = method.getGenericParameterTypes();//获得泛型的参数类型 for (Type genericParameterType : genericParameterTypes) { System.out.println("#"+genericParameterType); //判断泛型的参数类型是否等于结构的参数化类型 if (genericParameterType instanceof ParameterizedType) { //强转出参数化类型,获得真实的参数化"> test02(){ System.out.println(); return null; } public static void main(String[] args) throws NoSuchMethodException { Method method = Test09.class.getMethod("test01", Map.class, List.class); Method method1= Test09.class.getMethod("test02"); Type[] genericParameterTypes = method.getGenericParameterTypes();//获得泛型的参数类型 for (Type genericParameterType : genericParameterTypes) { System.out.println("#"+genericParameterType); //判断泛型的参数类型是否等于结构的参数化类型 if (genericParameterType instanceof ParameterizedType) { //强转出参数化类型,获得真实的参数化"> test02(){ System.out.println(); return null; } public static void main(String[] args) throws NoSuchMethodException { Method method = Test09.class.getMethod("test01", Map.class, List.class); Method method1= Test09.class.getMethod("test02"); Type[] genericParameterTypes = method.getGenericParameterTypes();//获得泛型的参数类型 for (Type genericParameterType : genericParameterTypes) { System.out.println("#"+genericParameterType); //判断泛型的参数类型是否等于结构的参数化类型 if (genericParameterType instanceof ParameterizedType) { //强转出参数化类型,获得真实的参数化">

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2c5c5a83-0df3-4f02-85f1-c9ec62082c60/IMG_0235.jpg

package top.ltyzqhh.Reflection;

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 Test09 {
    public void test01(Map<String,User> map, List<User> list) {
        System.out.println("test01");
    }

    public Map<String,User> test02(){
        System.out.println();
        return null;
    }

    public static void main(String[] args) throws NoSuchMethodException {
        Method method = Test09.class.getMethod("test01", Map.class, List.class);
        Method method1= Test09.class.getMethod("test02");
        Type[] genericParameterTypes = method.getGenericParameterTypes();//获得泛型的参数类型

        for (Type genericParameterType : genericParameterTypes) {
            System.out.println("#"+genericParameterType);
            //判断泛型的参数类型是否等于结构的参数化类型
            if (genericParameterType instanceof ParameterizedType)
            {
                //强转出参数化类型,获得真实的参数化信息
                Type[] actualTypeArguments = ((ParameterizedType) genericParameterType).getActualTypeArguments();
                for (Type actualTypeArgument : actualTypeArguments) {
                    System.out.println(actualTypeArgument);
                }
            }
        }

        method= Test09.class.getMethod("test02",null);
        Type genericReturnType = method.getGenericReturnType();
        if (genericReturnType instanceof ParameterizedType)
        {
            //强转出参数化类型,获得真实的参数化信息
            Type[] actualTypeArguments = ((ParameterizedType) genericReturnType).getActualTypeArguments();
            for (Type actualTypeArgument : actualTypeArguments) {
                System.out.println(actualTypeArgument);
            }
        }
    }
}

运行结果

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/20673eab-4269-40ec-9413-bbf51f991f8b/Snipaste_2021-05-09_22-46-35.png