Java之反射机制六:获取方法的泛型信息
Posted 秋风飒飒吹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之反射机制六:获取方法的泛型信息的主要内容,如果未能解决你的问题,请参考以下文章