2017-03-31 71 views
-1

是否有任何理由这样做:是否有理由在Java中使参数泛型泛化?

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

与此:

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

我见过的第一次使用了几次,似乎提供任何好处,这引出了一个问题:为什么使用它?

我知道钻石运营商(<>)是区分new LinkedList()new LinkedList<>()的必要条件,这一点很清楚。

+3

可能有重复的[Java 7中钻石操作符的意义是什么?](http://stackoverflow.com/questions/4166966/what-is-the-point-of-the-diamond-operator-in -java-7) –

+3

呃,什么?菱形运算符在另一种形式之后添加,以便让您执行'ArrayList <>'语法而不是更长的形式。你混淆了历史排序。 –

+0

除非代码使用1.7之前的编译器进行编译,否则不使用'new ArrayList <>()'是绝对没有意义的,如果这就是你要求的。 – manouti

回答

0

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

<>运营商已经推出了只有在JDK1.7,所以你可能已经看到了遗留代码,它使用new ArrayList<Integer>()(不<>运营商)

此外,对代码的支持(如<Integer>)无使用<>运营商仍然存在,因为向后兼容性

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

0

在引入由菱形语法提供的类型推断之前,在Java 7之前首次使用冗余类型的类型。