java 泛型反射_Java使用反射来获取泛型信息示例
本文实例讲述了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使用反射来获取泛型信息示例相关推荐
- java使用腾讯地图根据位置获取经纬度信息
java使用腾讯地图根据位置获取经纬度信息. 直接上代码,这里需要你去腾讯地图注册账号获取一个key值: /***** @author Abell* @descibe 根据位置获取经纬度信息* @da ...
- java 反射 泛型 构造函数_Java复习——反射和泛型的复习
反射 Class类 一个类被类加载器加载到内存之中,占有一片区域,这个空间里的内容就是类的字节码,不同的类的字节码是不一样的,这一个个空间页可以使用类来表示,这就是Class类. 根据这个概念可知:不 ...
- java动态变量名反射_Java动态性—反射 - Eclipse666的个人空间 - OSCHINA - 中文开源技术交流社区...
1.什么是动态语言? 程序运行时,可以改变程序的结构或者变量类型:如Python,javaScript function(){ var s="var a=3;var b=4;" e ...
- java 内省 反射_Java的反射和内省
1.反射 反射是指在运行过程中,可以获取任意类的属性和方法信息; 对于任意对象,都可以获取调用其任意方法; 这种动态获取类信息和动态调用对象方法的方式称为Java语言的反射机制; public cla ...
- java正则 链接_Java使用正则表达式匹配获取链接地址的方法示例
本文实例讲述了Java使用正则表达式匹配获取链接地址的方法.分享给大家供大家参考,具体如下: 获取页面中字符串的url地址我们都会使用正则表达式来匹配获取了,下面我来给大家总结几个匹配获取链接地址示例 ...
- java读取对象失败_jsp exception对象获取异常信息
获取异常信息的exception对象 exception内置对象用来处理JSP文件执行时发生的所有错误和异常.exception对象和Java的所有对象一样,都具有系统的继承结构,exception对 ...
- java调用腾讯地图根据经纬度获取位置信息
这是java提交经纬度信息,然后获取该经纬度所在省市区的一个方法,话不多说直接上代码: package com.lmj.util;import net.sf.json.JSONObject; impo ...
- java实现微信公众号授权登录获取用户信息(一)
参考文章:https://blog.csdn.net/Santiago_M/article/details/79109154 : https://www.cnblogs.com/jilu/p/6123 ...
- 微信用户绑定java实例_OAuth2.0微信网页授权获取用户信息实现全过程(JAVA版本)...
一.前言 为什么需要OAuth2.0网页授权接口,主要是为了获取微信用户的基本信息(比如用户绑定,用户统计等等) 特别注意:只有认证的服务号有此接口权限 那么订阅号如何实现这个功能呢?可以通过另一个服 ...
最新文章
- quartz定时定时任务执行两次
- JavaWeb:上传下载文件
- python sklearn学习笔记大全(常见代码速查)
- 怎么在linux下查看gpu版本号,linux.查看gpu版本
- java获取项目的部署目录结构_JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别...
- PHP设计模式——策略模式
- 怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...
- 模拟攻击者利用“域前置”(Domain Fronting)技术逃避审查(重定向、CDN)
- 【BZOJ1922】【Tyvj1736】【codevs2129】大陆争霸,无语最短路
- Win7点击文件夹右键可打开cmd控制台,并获取当前目录
- 高分Essay写作要点分析
- 为什么宇宙年龄138亿年(哈勃常数的倒数),大小竟有930亿光年?
- 国仁猫哥:视频号企业运营指南教科书;不可错失的红利。
- size_t、ssize_t、int、long的比较
- 测试三极管的口诀[转]
- Java程序员工资尤其的高,具体原因是什么呢?
- python 绘制正弦余弦函数 matplotlib的基本使用
- 屋顶材料/光伏板美标ASTM E108防火阻燃等级怎么分类
- 从键盘读入一个字符串,若遇到字母,则输出0;若遇到数字则输出1;否则不输出。例如:输入ab@12c,输出00110
- 《华尔街》观后笔记9——拯救危机
热门文章
- 整合hive基于cdh6_Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!
- java timer和timertask_Timer和TimerTask与Java中的线程+睡眠
- Nature Methods:宏基因组物种组成分析工具MetaPhlAn2
- NBT-19年2月刊4篇35分文章聚焦宏基因组研究
- Microbiome:微生物组研究中优化方法和规避误区
- R语言使用dplyr聚合统计分组数据、ggplot2可视化分组线图、使用geom_line函数自定义设置线条类型、粗细、颜色(Change line types + colors by groups)
- R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)
- R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关或者部分相关性系数并用建设检验检验相关性的显著性
- Annovar注释的突变文件转MAF对象
- postman 接口测试工具介绍