5

通过以下方式进行初始化有什么区别:

MyWrapper<String> wrapper = new MyWrapper<String>();

通过以下方式初始化:

MyWrapper<String> wrapper = new MyWrapper<>();

有什么理由要使用前者而不是后者?我看到很多前者;我不确定这是否只是因为人们已经习惯了,或者你想这样写是有原因的。

4

4 回答 4

10

后者仅在 Java 7 之后才可用。这就是您经常看到前者的原因。后者是等效的,并且更短。

于 2013-06-10T21:32:13.697 回答
4

JDK 7 允许在初始化时不重新定义这个“冗余”菱形。

这只是一个较短的语法。

对于JDK <= JDK 6,后者不起作用,您必须使用前者。

于 2013-06-10T21:32:19.913 回答
2

这很大程度上是因为虽然 Java 7 是当前版本,但很多代码仍然使用 Java 6,它不支持后一种形式。

本质上,Java 7 编译器更擅长推断泛型类型。

于 2013-06-10T21:32:28.290 回答
0

在 Java 7 之前,前者是必需的。现在使用类型推断,后者是首选。

于 2013-06-10T21:33:28.603 回答