本文实例讲述了Java使用反射来获取泛型信息。分享给大家供大家参考,具体如下:

一 点睛

获得了Field对象后,就可以很容易地获得该Field的数据类型,即使用如下代码即可获得指定Field的类型:

//获取Field对象f的类型

Class> a = f.getType();

通过这种方式只对普通类型的Field有效。但如果该Field的类型是有泛型限制的类型,如Map类型,则不能准确的得到该Field的泛型参数。

为了获得指定Field的泛型类型,应先使用如下方法来获取指定Field的泛型类型:

//获得Field实例f的泛型类型

Type gType = f.getGenericType();

然后将Type对象强制类型转换为ParameterizedType对象,ParameterizedType代表被参数化的类型,也就是增加了泛型限制的类型。ParameterizedType类提供了两个方法:

getRawType():返回被泛型限制的类型。

getActualTypeArguments():返回泛型参数类型。

二 实战

1 代码

import java.util.*;

import java.lang.reflect.*;

public class GenericTest

{

private Map score;

public static void main(String[] args)

throws Exception

{

Class clazz = GenericTest.class;

Field f = clazz.getDeclaredField("score");

// 直接使用getType()取出的类型只对普通类型的成员变量有效

Class> a = f.getType();

// 下面将看到仅输出java.util.Map

System.out.println("score的类型是:" + a);

// 获得成员变量f的泛型类型

Type gType = f.getGenericType();

// 如果gType类型是ParameterizedType对象

if(gType instanceof ParameterizedType)

{

// 强制类型转换

ParameterizedType pType = (ParameterizedType)gType;

// 获取原始类型

Type rType = pType.getRawType();

System.out.println("原始类型是:" + rType);

// 取得泛型类型的泛型参数

Type[] tArgs = pType.getActualTypeArguments();

System.out.println("泛型信息是:");

for (int i = 0; i < tArgs.length; i++)

{

System.out.println("第" + i + "个泛型类型是:" + tArgs[i]);

}

}

else

{

System.out.println("获取泛型类型出错!");

}

}

}

2 运行

E:\Java\疯狂java讲义\codes\18\18.6>java GenericTest

score的类型是:interface java.util.Map

原始类型是:interface java.util.Map

泛型信息是:

第0个泛型类型是:class java.lang.String

第1个泛型类型是:class java.lang.Integer

希望本文所述对大家java程序设计有所帮助。

java 泛型反射_Java使用反射来获取泛型信息示例相关推荐

  1. java使用腾讯地图根据位置获取经纬度信息

    java使用腾讯地图根据位置获取经纬度信息. 直接上代码,这里需要你去腾讯地图注册账号获取一个key值: /***** @author Abell* @descibe 根据位置获取经纬度信息* @da ...

  2. java 反射 泛型 构造函数_Java复习——反射和泛型的复习

    反射 Class类 一个类被类加载器加载到内存之中,占有一片区域,这个空间里的内容就是类的字节码,不同的类的字节码是不一样的,这一个个空间页可以使用类来表示,这就是Class类. 根据这个概念可知:不 ...

  3. java动态变量名反射_Java动态性—反射 - Eclipse666的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.什么是动态语言? 程序运行时,可以改变程序的结构或者变量类型:如Python,javaScript function(){ var s="var a=3;var b=4;" e ...

  4. java 内省 反射_Java的反射和内省

    1.反射 反射是指在运行过程中,可以获取任意类的属性和方法信息; 对于任意对象,都可以获取调用其任意方法; 这种动态获取类信息和动态调用对象方法的方式称为Java语言的反射机制; public cla ...

  5. java正则 链接_Java使用正则表达式匹配获取链接地址的方法示例

    本文实例讲述了Java使用正则表达式匹配获取链接地址的方法.分享给大家供大家参考,具体如下: 获取页面中字符串的url地址我们都会使用正则表达式来匹配获取了,下面我来给大家总结几个匹配获取链接地址示例 ...

  6. java读取对象失败_jsp exception对象获取异常信息

    获取异常信息的exception对象 exception内置对象用来处理JSP文件执行时发生的所有错误和异常.exception对象和Java的所有对象一样,都具有系统的继承结构,exception对 ...

  7. java调用腾讯地图根据经纬度获取位置信息

    这是java提交经纬度信息,然后获取该经纬度所在省市区的一个方法,话不多说直接上代码: package com.lmj.util;import net.sf.json.JSONObject; impo ...

  8. java实现微信公众号授权登录获取用户信息(一)

    参考文章:https://blog.csdn.net/Santiago_M/article/details/79109154 : https://www.cnblogs.com/jilu/p/6123 ...

  9. 微信用户绑定java实例_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...

    一.前言 为什么需要OAuth2.0网页授权接口,主要是为了获取微信用户的基本信息(比如用户绑定,用户统计等等) 特别注意:只有认证的服务号有此接口权限 那么订阅号如何实现这个功能呢?可以通过另一个服 ...

最新文章

  1. quartz定时定时任务执行两次
  2. JavaWeb:上传下载文件
  3. python sklearn学习笔记大全(常见代码速查)
  4. 怎么在linux下查看gpu版本号,linux.查看gpu版本
  5. java获取项目的部署目录结构_JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别...
  6. PHP设计模式——策略模式
  7. 怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...
  8. 模拟攻击者利用“域前置”(Domain Fronting)技术逃避审查(重定向、CDN)
  9. 【BZOJ1922】【Tyvj1736】【codevs2129】大陆争霸,无语最短路
  10. Win7点击文件夹右键可打开cmd控制台,并获取当前目录
  11. 高分Essay写作要点分析
  12. 为什么宇宙年龄138亿年(哈勃常数的倒数),大小竟有930亿光年?
  13. 国仁猫哥:视频号企业运营指南教科书;不可错失的红利。
  14. size_t、ssize_t、int、long的比较
  15. 测试三极管的口诀[转]
  16. Java程序员工资尤其的高,具体原因是什么呢?
  17. python 绘制正弦余弦函数 matplotlib的基本使用
  18. 屋顶材料/光伏板美标ASTM E108防火阻燃等级怎么分类
  19. 从键盘读入一个字符串,若遇到字母,则输出0;若遇到数字则输出1;否则不输出。例如:输入ab@12c,输出00110
  20. 《华尔街》观后笔记9——拯救危机

热门文章

  1. 整合hive基于cdh6_Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!
  2. java timer和timertask_Timer和TimerTask与Java中的线程+睡眠
  3. Nature Methods:宏基因组物种组成分析工具MetaPhlAn2
  4. NBT-19年2月刊4篇35分文章聚焦宏基因组研究
  5. Microbiome:微生物组研究中优化方法和规避误区
  6. R语言使用dplyr聚合统计分组数据、ggplot2可视化分组线图、使用geom_line函数自定义设置线条类型、粗细、颜色(Change line types + colors by groups)
  7. R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)
  8. R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关或者部分相关性系数并用建设检验检验相关性的显著性
  9. Annovar注释的突变文件转MAF对象
  10. postman 接口测试工具介绍