是否有理由在Java中对泛型进行双重参数化?

时间:2017-03-31 20:48:08

标签: java generics semantics

有没有理由这样做:

List<Integer> integers = new ArrayList<Integer>();

与此相对:

List<Integer> integers = new ArrayList<>();

我已经看过几次第一次使用,似乎没有任何好处,这引出了一个问题:为什么要使用它?

我知道钻石算子(&lt;&gt;)是区分new LinkedList()new LinkedList<>()所必需的,只是为了清楚。

2 个答案:

答案 0 :(得分:0)

  

我已经看过几次第一次使用,似乎没有提供   好处,这引出了一个问题:为什么要使用它?

仅在JDK1.7中引入了

<>运算符,因此您可能已经看到使用new ArrayList<Integer>()(没有<>运算符)的遗留代码

此外,由于向后兼容性,不使用<Integer>运算符的代码支持(如<>)仍然存在。

因此,答案是如果您的项目使用JDK1.7或更高版本,则不会使用它。

答案 1 :(得分:0)

在Java 7之前,当引入菱形语法提供的类型推断时,需要第一次使用冗余类型的用法。