我们如何使用Java 7 类型推断来创建通用实例功能?使用这种新风格有什么好处?
答案 0 :(得分:5)
这也称为钻石操作员。它使您不必在泛型类型的实例化上编写泛型类型参数。实例化泛型类型的类型参数是从声明中出现的类型参数推断出来的。
ArrayList<String> list = new ArrayList<>();
而不是:
ArrayList<String> list = new ArrayList<String>();
答案 1 :(得分:2)
没有。菱形语法仅仅是编码/打字的简写。这两个是相同的
List<String> a = new ArrayList<String>();
List<String> a = new ArrayList<>();
对于编译过程,它们的处理方式相同,提示编译器。即使在类型擦除之前,它们也是一样的。它实际上只是为您提供便利。
答案 2 :(得分:1)
只是打字少了。
来自the docs:
例如,请考虑以下变量声明:
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
在Java SE 7中,您可以使用一组空类型参数(&lt;&gt;)替换构造函数的参数化类型:
Map<String, List<String>> myMap = new HashMap<>();