测试类加单元测试方法,运行结果在注释里面:

  1. package temp;
  2.  
  3. import org.junit.Test;
  4.  
  5. import java.lang.reflect.Field;
  6. import java.lang.reflect.ParameterizedType;
  7. import java.lang.reflect.Type;
  8. import java.util.List;
  9. import java.util.Map;
  10.  
  11. public class TestClass {
  12.  
  13. private List<Character> list;
  14.  
  15. private Map<String, Integer> map;
  16.  
  17. @Test
  18. public void test() throws NoSuchFieldException {
  19. Field listField = TestClass.class.getDeclaredField("list");
  20. Field mapField = TestClass.class.getDeclaredField("map");
  21. //对比 Field 类的 getType() 和 getGenericType()
  22. System.out.println(listField.getType()); // interface java.util.List
  23. System.out.println(listField.getGenericType()); // java.util.List<java.lang.Character>
  24. System.out.println(mapField.getType()); // interface java.util.Map
  25. System.out.println(mapField.getGenericType()); // java.util.Map<java.lang.String, java.lang.Integer>
  26.  
  27. //获取 list 字段的泛型参数
  28. ParameterizedType listGenericType = (ParameterizedType) listField.getGenericType();
  29. Type[] listActualTypeArguments = listGenericType.getActualTypeArguments();
  30. for (int i = 0; i < listActualTypeArguments.length; i++) {
  31. System.out.println(listActualTypeArguments[i]);
  32. }
  33. // class java.lang.Character
  34.  
  35. //获取 map 字段的泛型参数
  36. ParameterizedType mapGenericType = (ParameterizedType) mapField.getGenericType();
  37. Type[] mapActualTypeArguments = mapGenericType.getActualTypeArguments();
  38. for (int i = 0; i < mapActualTypeArguments.length; i++) {
  39. System.out.println(mapActualTypeArguments[i]);
  40. }
  41. // class java.lang.String
  42. // class java.lang.Integer
  43. }
  44.  
  45. }

待思考:

1、java.lang.reflect.Type 和 java.lang.Class 有什么区别?

2、java.lang.reflect.ParameterizedType 是不是就是泛型参数类型的表示?

获取List、Set、Map等字段的泛型参数的更多相关文章

  1. Gson通过借助TypeToken获取泛型参数的类型的方法

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  2. Gson通过借助TypeToken获取泛型参数的类型的方法(转)

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  3. ParameterizedType获取java泛型参数类型

    ParameterizedType getClass().getGenericSuperclass() 返回表示此 Class 所表示的实体(类.接口.基本类型或 void)的直接超类的 Type,然 ...

  4. go语言通过反射获取和设置结构体字段值的方法

    本文实例讲述了go语言通过反射获取和设置结构体字段值的方法.分享给大家供大家参考.具体实现方法如下: type MyStruct struct { N int } n := MyStruct{ 1 } ...

  5. 通过反射获取父类中的泛型参数对应的Class对象

    假设有两个类:Dao 和 PersonDao,它们的代码如下: Dao: public class Dao<T> { private Class<T> clazz; T get ...

  6. TaskTracker获取并执行map或reduce任务的过程1

    TaskTracker获取并执行map或reduce任务的过程(一) 我们知道TaskTracker在默认情况下,每个3秒就行JobTracker发送一个心跳包,也就是在这个心跳包中包含对任务的请求. ...

  7. SQL获取分组后取某字段最大一条记录(求每个类别中最大的值的列表)

    获取分组后取某字段最大一条记录 方法一:(效率最高) select * from test as a where typeindex = (select max(b.typeindex) from t ...

  8. 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型

    如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...

  9. MySQL获取Schema表名和字段信息

    MySQL获取Schema表名和字段信息 获取表名 select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,TABLE_COMMENT,CREATE_TIME,U ...

随机推荐

  1. Davlik虚拟机

    过几天得去面试,感觉原来做的东西都忘了. 有点累,无意看了下二师兄的小论文,想来原先自己也参与过一点点,所以记录下: Dalvik虚拟机中共有3种解释器,分别时SWITCH_INTERP,THREAD ...

  2. ModelState.AddModelError使用

    后台: ModelState.AddModelError("userPwd", "请输入密码!"); ModelState是一个字典类型,这句话的作用是向Mod ...

  3. linux convert命令安装及使用

    linux下ImageMagick安装和使用 检查系统有无安装ImageMagick shell> rpm -qa | grep ImageMagick 没有就开始安装ImageMagick s ...

  4. ubuntu 执行make menuconfig ARCH=arm

    1.ubuntu 执行make menuconfig ARCH=arm出错了!! *** Unable to find the ncurses libraries or the *** require ...

  5. Java------遍历Map<k,v>的方法

    1. public class MapAction extends ActionSupport{ private Map<String, User> map = new HashMap&l ...

  6. 异常处理----使用 try…catch…finally 处理异常

    使用 try…catch…finally 处理异常 异常处理是通过try-catch-finally语句实现的. try { ...... //可能产生异常的代码 } catch( Exception ...

  7. ASP代码审计学习笔记 -2.XSS跨站脚本

    XSS漏洞: 漏洞代码: <% xss=request("xss") response.write(xss) %> 漏洞利用: 漏洞修复: Server.HTMLEnc ...

  8. Android开发 Android Studio2.0 教程从入门到精通Windows版 - 入门篇

    第一篇 介绍了Android Studio开发环境以及Genymotion虚拟机安装方法,本节将给大家介绍如何使用Android Studio开发应用. 开发第一应用 可以开发属于自己的应用,是否有点 ...

  9. springdata----->spring集成redis(一)

    使用spring-data-redis与redis集成,今天我们就通过例子来学习一下.当时间和耐心都已经变为奢侈,我们只能靠星座了解彼此. spring与redis集成的实例 注意:这里我们测试的是安 ...

  10. springboot---->springboot的使用(一)

    这里我们记录一下springboot的使用,第一次创建环境. springboot的使用 项目结构如下: 一.我们使用maven去构建springboot的依赖.其中我们使用的pom.xml文件内容如 ...