泛型第二个类型限制需要写吗?

Brutal
  • 400
private TimestampComparator<BaseBean> dataComparator = new TimestampComparator<>();

以前都是前后都写上类型,偶然发现后面不写也可以(编译通过也没有警告)

在开发中,大家都是怎么做的?有没有参考的标准?

回复
阅读 3.4k
3 个回答

完全不用写。好像说之前需要写,被喷了。

JDK1.7及以上可以省略。

Java的一颗语法糖,这个还有个名称叫宝石语法。JDK1.7以后不推荐写。
至于原理,涉及到了Java泛型的内部实现方式,不同于C#的真实泛型实现(类型膨胀),Java通过类型擦除和强制类型转换实现的伪泛型。
对于运行期的Java来说,ArrayList<Integer>和ArrayList<String>就是同一个类。

宣传栏