为什么TypeToken是protect

380 阅读1分钟

TypeTokengoogle提供的一个解析Json数据的类库(gson)中一个类

感谢 为什么Gson 的TypeToken 个构造是protect而非public?

why the TypeToken construction in Gson is so weird?

用到retrofit 自定义convert 看到了gson就看到了TypeToken

看到这个类的修饰符很奇怪是使用protect修饰的,我很少遇见这样的类,所以就很好奇,搜索了下也不顺利.就在segmentfault 上提问了,收到了回答 其中一个就上面的链接,里面有描述.

还有就是提出这个问题后收到回答后自己的一些理解.

  1. 为什么是protect不是public? 为了不被直接创建,这样创建对象时只能创建子类了.
  2. 为什么不是abstract? 这个我不了解不太确定是不是为了在同一个包中和类中使用的时候也必须创建子类
  3. 强制创建子类为了什么? 强制创建子类是为了让__子类明确父类声明的泛型的类型__(可以不声明,但是不声明时类似泛型为Object),这里是我第一次觉得java不爽的地方,居然不能强制标注泛型.

需要相关知识 : java基础,java泛型擦除