0

我们如何将 Java 7类型推断用于通用实例创建功能?使用这种新风格有什么好处?

4

3 回答 3

5

这也称为钻石算子。它使您不必在泛型类型的实例化上编写泛型类型参数。实例化的泛型类型的类型参数是从声明中存在的类型参数推断出来的。

ArrayList<String> list = new ArrayList<>();

代替:

ArrayList<String> list = new ArrayList<String>();
于 2013-07-24T08:57:13.083 回答
2

不,菱形语法只是编码/打字的简写。这两个是一样的

List<String> a = new ArrayList<String>();  
List<String> a = new ArrayList<>();  

它们在编译过程中被视为相同,对编译器的提示。即使在类型擦除之前,它们的处理方式也是一样的。这实际上只是为您提供便利。

于 2013-07-24T08:59:58.297 回答
1

只是打字少了点。

文档

例如,考虑以下变量声明:

Map<String, List<String>> myMap = new HashMap<String, List<String>>();

在 Java SE 7 中,您可以用一组空的类型参数 (<>) 替换构造函数的参数化类型:

Map<String, List<String>> myMap = new HashMap<>();

不幸的是,您仍然需要输入 diamond

于 2013-07-24T08:57:10.090 回答