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用法,推导如何实现泛型反射相关推荐

  1. java referencemap_Java中TypeReference用法说明

    来源于:https://blog.csdn.net/zhuzj12345/article/details/102914545 在使用fastJson时,对于泛型的反序列化很多场景下都会使用到TypeR ...

  2. 【java】Java中TypeReference用法说明

    1.概述 TypeReference用途 在使用FastJson时,对于泛型的反序列化很多场景下都会使用到TypeReference,例如: void testTypeReference() {Lis ...

  3. fast-json.jar的用法

    fast-json.jar 解析json数据:一种json数据解析方式是这种,点击这里下载jsonfast.jar+fastjsonAPI文档 [{"id": 6378," ...

  4. fastjson的常用用法以及自定义排序

    fastJson的四种常用方法 JSON 转 POJO public static <T> T getObject(String pojo, Class<T> tclass) ...

  5. alibaba JSON TypeReference 复杂类型转换

    1. 基础使用 在fastjson中提供了一个用于处理泛型反序列化的类TypeReference. import com.alibaba.fastjson.TypeReference;List< ...

  6. TypeReference

    1. 基础使用 在fastjson中提供了一个用于处理泛型反序列化的类TypeReference. import com.alibaba.fastjson.TypeReference;List< ...

  7. fastjson 检测json格式_FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换...

    fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fas ...

  8. fastjson android 版本,fastjson 1.1.58.android 发布,Bug 修复版本

    fastjson 1.1.58.android 发布,Bug 修复版本 这里有新鲜出炉的精品教程,程序狗速度看过来! fastjson JSON 解析器 fastjson 是一个性能很好的 Java ...

  9. Python内置函数int()高级用法

    int()函数常用来把其他类型转换为整数,例如: >>> int(3.2) 3 >>> int(1/3) 0 其实,int是Python内置类型之一,之所以能够当作 ...

最新文章

  1. SAP QM 检验批上各个MIC质检结果的查询报表?
  2. python2好还是python3好-总结对比Python2和Python3之间的区别
  3. AFN中请求序列化的设置
  4. tensorflow dataset_ops batch()方法 (将此数据集的连续元素合并为批)
  5. POJ - 1469 COURSES (匈牙利算法入门题)
  6. SAP Spartacus自定义Component的Not found问题
  7. graphql 有必要吗_您准备好观看GraphQL了吗?
  8. [转]如何用VS2005制作Web安装程序
  9. hp 服务器可以安装win7系统安装失败,如何解决win7hp1213打印机安装失败的问题
  10. pku 1459 最大流 SAP
  11. SQL Server 字符串拆分
  12. 8.最大滑动窗口问题
  13. oracle 基础知识(十四)----索引扫描
  14. githut管理vs2012代码
  15. whx带我刷JOI training
  16. 100offer 为专业程序打造的招聘平台
  17. TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu()
  18. 大学计算机ptt制作模板,东南大学计算机ppt模板
  19. Java面向可复用性和可维护性的设计模式
  20. 手把手教你学PowerBI数据分析:制作客户分析报告

热门文章

  1. 僵尸进程孤儿进程与守护进程
  2. java mysql 更新_MySQL更新和删除数据
  3. centos7.6查询不到网卡信息
  4. python笔记之for循环
  5. 程序员必备的 10 大 GitHub 仓库
  6. 54款开源服务器软件(内容管理、数据库、电子商务、邮件服务器、文件传输、操作系统、安全、小公司服务 .
  7. Linux软件包组的选择
  8. matlab读int16读文件_MATLAB——文件读写(1)
  9. wxif 判断字符串相等_ES6:字符串、数组、对象的扩展
  10. Java自动部署maven_Maven+Tomcat8 实现自动化部署的方法