Java反射--获取类方法的泛型返回或泛型参数 - Go语言中文社区

Java反射--获取类方法的泛型返回或泛型参数


 

Java反射--获取类方法的泛型返回或泛型参数

 

 

一.测试类

public class Test02 {

    public void parameterTest(Map<Integer, Dog> map){

    }

    public Map<Integer,Dog> returnTest(){
        return new HashMap<Integer, Dog>();
    }
}

 

 

 

二.获取方法的泛型参数

    @Test  //获取方法的参数中的泛型信息
    public void test() throws NoSuchMethodException {
        Method method = Test02.class.getMethod("parameterTest", Map.class);
        //获取方法的参数类型
        Type[] genericParameterTypes = method.getGenericParameterTypes();
        for (Type genericParameterType : genericParameterTypes) {
            System.out.println("type:"+genericParameterType);
            //ParameterizedType:表示一种参数化类型,比如Collection<Object>
            if(genericParameterType instanceof ParameterizedType){
                Type[] actualTypeArguments = ((ParameterizedType) genericParameterType).getActualTypeArguments();
                for (Type parameterType : actualTypeArguments) {
                    System.out.println(parameterType);
                }
            }
        }
    }
 

 

 

 

 

 三.获取方法的泛型返回

    @Test //获取方法的返回值中的泛型信息
    public void test2() throws NoSuchMethodException {
        Method method = Test02.class.getMethod("returnTest");
        //获取方法的返回值类型
        Type genericReturnType = method.getGenericReturnType();
        if(genericReturnType instanceof ParameterizedType){
            Type[] actualTypeArguments = ((ParameterizedType) genericReturnType).getActualTypeArguments();
            for (Type parameterType : actualTypeArguments) {
                System.out.println(parameterType);
            }
        }
    }

 

 

 

 

Java之反射机制六:获取方法的泛型信息 - 秋风飒飒吹 - 博客园
https://www.cnblogs.com/wwjj4811/p/12592443.html

 

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/guyue35/article/details/112047456
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-11 01:35:39
  • 阅读 ( 867 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢