基础比较差。
本篇文章,仅属于个人理解。
不对,请指出 ^_^
TypeReference
下面只是我的初步疑问,下面会继续分析。
我只是在想:为什么使用的时候,非要加一个 {} 大括号呢???不加 {} 难道不香吗??
下面有三种:
1、fastjson:protected 构造器(不能直接 new 对象,但子类可以访问这个构造器,我们可以创建匿名内部类来解决,也就是new 对象后面加上 {} 大括号。)
2、hutool:虽然构造器是 public,但是类是抽象的,你没法使用,必须要进行实现,即使这个抽象类没有 abstract 方法。所以,要使用匿名内部类来进行实现,也需要加 {} 大括号。
3、jackson:它把上面二者都给结合了。
这个问题先按下不表,后面进行讨论具体原因,我们先看看泛型。
1 | // 2022-02-11 11:25 关于 new TypeReference<T> 需要加 {} 大括号的问题 ===> 因为泛型问题 |
Jackson注释的启发
它上面说,是受到了文章 Super Type Tokens — Neal Gafter’s blog
简直一毛一样,O(∩_∩)O哈哈~
1 | // 使用 Java 泛型规范 Type 类型,来保存住泛型。 |
泛型
可参考 Java基础总结 — 泛型
也可查看这个视频 05.泛型的擦除和补偿
下面引用这个视频的一个截图:
泛型的出现是 JDK 1.5。
原本 JVM 全做了就好了,就是为了和以前的兼容,提供了几个方法,类,接口。
重点参考方法 :
注释翻译
1 | public final class Class<T> implements java.io.Serializable, |
原理
1 | // 2022-02-11 17:39 反射 Class#getGenericSignature0 方法 |