【发布时间】:2011-05-09 04:38:54
【问题描述】:
java 7 中的菱形运算符允许如下代码:
List<String> list = new LinkedList<>();
但是在 Java 5/6 中,我可以简单地写:
List<String> list = new LinkedList();
我对类型擦除的理解是这些是完全一样的。 (无论如何,泛型在运行时都会被删除)。
为什么要操心钻石呢?它允许哪些新功能/类型安全?如果它没有产生任何新功能,为什么他们会提到它作为一个特性?我对这个概念的理解有问题吗?
【问题讨论】:
-
请注意,如果您使用静态工厂方法,这不是问题,因为 Java 会对方法调用进行类型推断。
-
当你禁用警告它实际上没用...... :) 就像我一样
-
已回答但也在Java教程中(页面中间):docs.oracle.com/javase/tutorial/java/generics/…
-
dZone 上关于此的好文章。
-
我的观点是它是 List
list = new LinkedList (); 的语法糖;即保持通用
标签: java generics java-7 diamond-operator