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

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等字段的泛型参数的更多相关文章

  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. jQuery中 wrap() wrapAll() 与 wrapInner()的差异

    wrap() 方法把每个被选元素放置在指定的 HTML 内容或元素中.jQuery 文档操作 - wrapAll() 方法 wrapAll() 在指定的 HTML 内容或元素中放置所有被选的元素.jQ ...

  2. jquery计算出left和top,让一个div水平垂直居中的简单实例

    if($("#cont1").css("position")!="fixed"){         $("#cont1" ...

  3. VC++ 使用MSSOAP访问WebService天气服务(客户端开发)

    绪论 本文介绍使用VC++编程实现访问天气Web服务的简单实例(例子来源于网络). Web天气服务 http://www.webxml.com.cn/WebServices/WeatherWebSer ...

  4. TFS对签入文件忽略设置,解决pdb弹出警告

    我们在使用TFS项目老是出现冲突,要么编译的时候 提示PDB被签出这类的大量弹出,很烦人. 在群友的指点下,对签入文件进行限制.对PDB禁止签入以后,整个世界安静了.非常感谢 TFS=>服务器管 ...

  5. 如何在 React Native 中写一个自定义模块

    https://my.oschina.net/jpushtech/blog/983230

  6. 通过ArcGIS Desktop数据发布ArcGIS Server

    1.双击GIS Servers--->Add ArcGIS Server 2.选择Publish GIS Services 3.输入Server URL:http://localhost:608 ...

  7. C++中的字节对齐分析

    struct A { int a; char b; short c; }; struct B { char a; int b; short c; }; #pragma pack(2) struct C ...

  8. On iPad, UIImagePickerController must be presented via UIPopoverController

    本文转载至:http://blog.csdn.net/k12104/article/details/8537695 On iPad, UIImagePickerController must be p ...

  9. LNMP 配置二级域名

    准备: 已备案的主域名,例如:www.test.com 拥有自己的服务器 服务器环境 LNMP 目标: 配置一个二级域名: bbs.test.com 1 登录域名后台(阿里为例) 记录类型: A 主机 ...

  10. java基础---->Java关于复制的使用(一)

    这里简单记录一下java中关于浅复制和深复制的知识.很多时候,一个人选择了行走,不是因为欲望,也并非诱惑,他仅仅是听到了自己内心的声音. java中的复制clone方法 一.java对象的浅复制 一个 ...