获取List、Set、Map等字段的泛型参数
测试类加单元测试方法,运行结果在注释里面:
- package temp;
- import org.junit.Test;
- import java.lang.reflect.Field;
- import java.lang.reflect.ParameterizedType;
- import java.lang.reflect.Type;
- import java.util.List;
- import java.util.Map;
- public class TestClass {
- private List<Character> list;
- private Map<String, Integer> map;
- @Test
- public void test() throws NoSuchFieldException {
- Field listField = TestClass.class.getDeclaredField("list");
- Field mapField = TestClass.class.getDeclaredField("map");
- //对比 Field 类的 getType() 和 getGenericType()
- System.out.println(listField.getType()); // interface java.util.List
- System.out.println(listField.getGenericType()); // java.util.List<java.lang.Character>
- System.out.println(mapField.getType()); // interface java.util.Map
- System.out.println(mapField.getGenericType()); // java.util.Map<java.lang.String, java.lang.Integer>
- //获取 list 字段的泛型参数
- ParameterizedType listGenericType = (ParameterizedType) listField.getGenericType();
- Type[] listActualTypeArguments = listGenericType.getActualTypeArguments();
- for (int i = 0; i < listActualTypeArguments.length; i++) {
- System.out.println(listActualTypeArguments[i]);
- }
- // class java.lang.Character
- //获取 map 字段的泛型参数
- ParameterizedType mapGenericType = (ParameterizedType) mapField.getGenericType();
- Type[] mapActualTypeArguments = mapGenericType.getActualTypeArguments();
- for (int i = 0; i < mapActualTypeArguments.length; i++) {
- System.out.println(mapActualTypeArguments[i]);
- }
- // class java.lang.String
- // class java.lang.Integer
- }
- }
待思考:
1、java.lang.reflect.Type 和 java.lang.Class 有什么区别?
2、java.lang.reflect.ParameterizedType 是不是就是泛型参数类型的表示?
获取List、Set、Map等字段的泛型参数的更多相关文章
- Gson通过借助TypeToken获取泛型参数的类型的方法
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
- Gson通过借助TypeToken获取泛型参数的类型的方法(转)
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
- ParameterizedType获取java泛型参数类型
ParameterizedType getClass().getGenericSuperclass() 返回表示此 Class 所表示的实体(类.接口.基本类型或 void)的直接超类的 Type,然 ...
- go语言通过反射获取和设置结构体字段值的方法
本文实例讲述了go语言通过反射获取和设置结构体字段值的方法.分享给大家供大家参考.具体实现方法如下: type MyStruct struct { N int } n := MyStruct{ 1 } ...
- 通过反射获取父类中的泛型参数对应的Class对象
假设有两个类:Dao 和 PersonDao,它们的代码如下: Dao: public class Dao<T> { private Class<T> clazz; T get ...
- TaskTracker获取并执行map或reduce任务的过程1
TaskTracker获取并执行map或reduce任务的过程(一) 我们知道TaskTracker在默认情况下,每个3秒就行JobTracker发送一个心跳包,也就是在这个心跳包中包含对任务的请求. ...
- SQL获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)
获取分组后取某字段最大一条记录 方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from t ...
- 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型
如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...
- MySQL获取Schema表名和字段信息
MySQL获取Schema表名和字段信息 获取表名 select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,TABLE_COMMENT,CREATE_TIME,U ...
随机推荐
- Davlik虚拟机
过几天得去面试,感觉原来做的东西都忘了. 有点累,无意看了下二师兄的小论文,想来原先自己也参与过一点点,所以记录下: Dalvik虚拟机中共有3种解释器,分别时SWITCH_INTERP,THREAD ...
- ModelState.AddModelError使用
后台: ModelState.AddModelError("userPwd", "请输入密码!"); ModelState是一个字典类型,这句话的作用是向Mod ...
- linux convert命令安装及使用
linux下ImageMagick安装和使用 检查系统有无安装ImageMagick shell> rpm -qa | grep ImageMagick 没有就开始安装ImageMagick s ...
- ubuntu 执行make menuconfig ARCH=arm
1.ubuntu 执行make menuconfig ARCH=arm出错了!! *** Unable to find the ncurses libraries or the *** require ...
- Java------遍历Map<k,v>的方法
1. public class MapAction extends ActionSupport{ private Map<String, User> map = new HashMap&l ...
- 异常处理----使用 try…catch…finally 处理异常
使用 try…catch…finally 处理异常 异常处理是通过try-catch-finally语句实现的. try { ...... //可能产生异常的代码 } catch( Exception ...
- ASP代码审计学习笔记 -2.XSS跨站脚本
XSS漏洞: 漏洞代码: <% xss=request("xss") response.write(xss) %> 漏洞利用: 漏洞修复: Server.HTMLEnc ...
- Android开发 Android Studio2.0 教程从入门到精通Windows版 - 入门篇
第一篇 介绍了Android Studio开发环境以及Genymotion虚拟机安装方法,本节将给大家介绍如何使用Android Studio开发应用. 开发第一应用 可以开发属于自己的应用,是否有点 ...
- springdata----->spring集成redis(一)
使用spring-data-redis与redis集成,今天我们就通过例子来学习一下.当时间和耐心都已经变为奢侈,我们只能靠星座了解彼此. spring与redis集成的实例 注意:这里我们测试的是安 ...
- springboot---->springboot的使用(一)
这里我们记录一下springboot的使用,第一次创建环境. springboot的使用 项目结构如下: 一.我们使用maven去构建springboot的依赖.其中我们使用的pom.xml文件内容如 ...