从fastjson的TypeReference用法,推导如何实现泛型反射
1.fastjson带泛型反序列化的用法
fastjson
2.我们来看看TypeReference的源码是什么
TypeReference
* 我们发现TypeReferenced的构造方法是保护方法,也就是你无法直接实例化,你实例化出来的都是TypeReference的匿名子类
* 在构造方法里面有些我们平常没接触过的东西他们是什么呢?
3.下面我来看看TypeReference构造方法中到底是些什么东西
* 构造方法中第一句,从字面上的意思解释就是获取当前对象的泛型父Class,实际上他的作用也是这样的Type superClass = this.getClass().getGenericSuperclass();* 第二句就是获取泛型父Class的泛型参数this.type = ((ParameterizedType)superClass).getActualTypeArguments()[0];
4.Ok!下面我们通过自己的例子来获取泛型对象的泛型实际参数
*目的:通过FanDemo获取FanDto泛型类型
第一步够着两个类,一个是实际的泛型对象FanDto,一个是用来获取泛型参数的类FanDemo
FanDto
FanDto
第二步我们获取父泛型类FanDemo
获取FanDemo
输出结果:
输出结果
我发现我们已经获取到了泛型父类FanDemo
第三步通过泛型父类获取目的泛型类FanDto
泛型父类类型为ParameterizedType类型,通过getActualTypeArguments获取泛型参数数组
获取FanDto
输出结果:
输出结果
这个时候我们获取到了我们想要的泛型对象FanDto,接下来我们需要获取FanDto的泛型参数
第四步 获取FanDto的泛型参数T的类型
获取泛型参数T
输出结构为:
输出结果
这个时候我们得到了FanDto的泛型类型为String,ok 大功告成
最后通过获取泛型对应的字段
获取泛型对应的字段
输出结果为:
输出结果
注:泛型类型在编译的时候都会别转成Object不会留下任何预设对象的信息,所以必须要通过这种方式才能获取到泛型类型,这数据泛型擦除的内容,这里我就不细讲了
从fastjson的TypeReference用法,推导如何实现泛型反射相关推荐
- java referencemap_Java中TypeReference用法说明
来源于:https://blog.csdn.net/zhuzj12345/article/details/102914545 在使用fastJson时,对于泛型的反序列化很多场景下都会使用到TypeR ...
- 【java】Java中TypeReference用法说明
1.概述 TypeReference用途 在使用FastJson时,对于泛型的反序列化很多场景下都会使用到TypeReference,例如: void testTypeReference() {Lis ...
- fast-json.jar的用法
fast-json.jar 解析json数据:一种json数据解析方式是这种,点击这里下载jsonfast.jar+fastjsonAPI文档 [{"id": 6378," ...
- fastjson的常用用法以及自定义排序
fastJson的四种常用方法 JSON 转 POJO public static <T> T getObject(String pojo, Class<T> tclass) ...
- alibaba JSON TypeReference 复杂类型转换
1. 基础使用 在fastjson中提供了一个用于处理泛型反序列化的类TypeReference. import com.alibaba.fastjson.TypeReference;List< ...
- TypeReference
1. 基础使用 在fastjson中提供了一个用于处理泛型反序列化的类TypeReference. import com.alibaba.fastjson.TypeReference;List< ...
- fastjson 检测json格式_FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换...
fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fas ...
- fastjson android 版本,fastjson 1.1.58.android 发布,Bug 修复版本
fastjson 1.1.58.android 发布,Bug 修复版本 这里有新鲜出炉的精品教程,程序狗速度看过来! fastjson JSON 解析器 fastjson 是一个性能很好的 Java ...
- Python内置函数int()高级用法
int()函数常用来把其他类型转换为整数,例如: >>> int(3.2) 3 >>> int(1/3) 0 其实,int是Python内置类型之一,之所以能够当作 ...
最新文章
- SAP QM 检验批上各个MIC质检结果的查询报表?
- python2好还是python3好-总结对比Python2和Python3之间的区别
- AFN中请求序列化的设置
- tensorflow dataset_ops batch()方法 (将此数据集的连续元素合并为批)
- POJ - 1469 COURSES (匈牙利算法入门题)
- SAP Spartacus自定义Component的Not found问题
- graphql 有必要吗_您准备好观看GraphQL了吗?
- [转]如何用VS2005制作Web安装程序
- hp 服务器可以安装win7系统安装失败,如何解决win7hp1213打印机安装失败的问题
- pku 1459 最大流 SAP
- SQL Server 字符串拆分
- 8.最大滑动窗口问题
- oracle 基础知识(十四)----索引扫描
- githut管理vs2012代码
- whx带我刷JOI training
- 100offer 为专业程序打造的招聘平台
- TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu()
- 大学计算机ptt制作模板,东南大学计算机ppt模板
- Java面向可复用性和可维护性的设计模式
- 手把手教你学PowerBI数据分析:制作客户分析报告
热门文章
- 僵尸进程孤儿进程与守护进程
- java mysql 更新_MySQL更新和删除数据
- centos7.6查询不到网卡信息
- python笔记之for循环
- 程序员必备的 10 大 GitHub 仓库
- 54款开源服务器软件(内容管理、数据库、电子商务、邮件服务器、文件传输、操作系统、安全、小公司服务 .
- Linux软件包组的选择
- matlab读int16读文件_MATLAB——文件读写(1)
- wxif 判断字符串相等_ES6:字符串、数组、对象的扩展
- Java自动部署maven_Maven+Tomcat8 实现自动化部署的方法