在java中如何使用反射获取泛型信息

互联网 19-11-29

ParameterizedType就是参数化类型的意思。

解释:

声明类型中带有“<>”的都是参数化类型,比如List<Integer>Map<String,BigDecimal>

getActualTypeArguments()返回Type[],即“<>”里的参数,比如Map<String,BigDecimal>

getRawType()返回Tpye,得到“<>”前面的类型,比如List<String>

getOwnerType()返回Type,O<T>.I<S>类型变量调用时会返回O<T>,比如Map.Entry<Long,Short>

免费教学视频分享:java课程

import org.junit.Test; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.math.BigDecimal; import java.util.Map; public class ReflectDemo {     private static Map<String, BigDecimal>map;     @Test     public void test(){         try {             Class<?> aClass = Class.forName("com.test.annotation.param.ReflectDemo");             //获取map属性对象             Field field = aClass.getDeclaredField("map");             //获取map属性的类型             Type type = field.getGenericType();//返回属性声明的Type类型             if (type instanceof ParameterizedType) {                 //强转为ParameterizedType对象                 ParameterizedType parameterizedType = (ParameterizedType) type;                 //获取原始类型                 Type rawType = parameterizedType.getRawType();                 System.out.println("map的原始类型为:"+rawType);                 //获取map的类型的所有泛型信息                 Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();                 for(int i=0;i<actualTypeArguments.length;i++){                     System.out.println("Map类型的第"+(i+1)+"个泛型为:"+actualTypeArguments[i]);                 }             }          } catch (Exception e) {             e.printStackTrace();         }     } }

java相关文章教程推荐:java入门教程

以上就是在java中如何使用反射获取泛型信息的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 泛型信息
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Java类的继承使用什么关键字

相关资讯