我是靠谱客的博主 狂野野狼,最近开发中收集的这篇文章主要介绍java map 泛型 反射_java中用反射获取泛型信息的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java中用反射获取泛型信息的方法

发布时间:2020-06-22 09:51:08

来源:亿速云

阅读:143

作者:Leah

这篇文章给大家分享的是java中用反射获取泛型信息的方法,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。

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

解释:

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

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

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

getOwnerType()返回Type,O.I类型变量调用时会返回O,比如Map.Entry。

实例代码: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 Mapmap;

@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

System.out.println("Map类型的第"+(i+1)+"个泛型为:"+actualTypeArguments[i]);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

运行结果:

0adbffd484857c8b7eabe3c5155e119c.png

以上就是java中用反射获取泛型信息的方法的详细内容,代码示例简单明了,如果在日常工作遇到此问题。通过这篇文章,希望你能有所收获,更多详情敬请关注亿速云行业资讯频道!

最后

以上就是狂野野狼为你收集整理的java map 泛型 反射_java中用反射获取泛型信息的方法的全部内容,希望文章能够帮你解决java map 泛型 反射_java中用反射获取泛型信息的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部