通过以下方式进行初始化有什么区别:
MyWrapper<String> wrapper = new MyWrapper<String>();
通过以下方式初始化:
MyWrapper<String> wrapper = new MyWrapper<>();
有什么理由要使用前者而不是后者?我看到很多前者;我不确定这是否只是因为人们已经习惯了,或者你想这样写是有原因的。
后者仅在 Java 7 之后才可用。这就是您经常看到前者的原因。后者是等效的,并且更短。
JDK 7 允许在初始化时不重新定义这个“冗余”菱形。
这只是一个较短的语法。
对于JDK <= JDK 6,后者不起作用,您必须使用前者。
这很大程度上是因为虽然 Java 7 是当前版本,但很多代码仍然使用 Java 6,它不支持后一种形式。
本质上,Java 7 编译器更擅长推断泛型类型。
在 Java 7 之前,前者是必需的。现在使用类型推断,后者是首选。