1.fastjson带泛型反序列化的用法
2.我们来看看TypeReference的源码是什么
* 我们发现TypeReferenced的构造方法是保护方法,也就是你无法直接实例化,你实例化出来的都是TypeReference的匿名子类
* 在构造方法里面有些我们平常没接触过的东西他们是什么呢?
3.下面我来看看TypeReference构造方法中到底是些什么东西
* 构造方法中第一句,从字面上的意思解释就是获取当前对象的泛型父Class,实际上他的作用也是这样的
Type superClass = this.getClass().getGenericSuperclass();
* 第二句就是获取泛型父Class的泛型参数
this.type = ((ParameterizedType)superClass).getActualTypeArguments()[0];
4.Ok!下面我们通过自己的例子来获取泛型对象的泛型实际参数
*目的:通过FanDemo获取FanDto泛型类型
第一步够着两个类,一个是实际的泛型对象FanDto,一个是用来获取泛型参数的类FanDemo
第二步我们获取父泛型类FanDemo
输出结果:
我发现我们已经获取到了泛型父类FanDemo
第三步通过泛型父类获取目的泛型类FanDto
泛型父类类型为ParameterizedType类型,通过getActualTypeArguments获取泛型参数数组
输出结果:
这个时候我们获取到了我们想要的泛型对象FanDto,接下来我们需要获取FanDto的泛型参数
第四步 获取FanDto的泛型参数T的类型
输出结构为:
这个时候我们得到了FanDto的泛型类型为String,ok 大功告成
最后通过获取泛型对应的字段
输出结果为:
注:泛型类型在编译的时候都会别转成Object不会留下任何预设对象的信息,所以必须要通过这种方式才能获取到泛型类型,这数据泛型擦除的内容,这里我就不细讲了