我总是像这样初始化我的ArrayLists:
List<Integer> list = new ArrayList<Integer>();
但是根据我的IDE,new ArrayList<>
之后的部分应该是空的,如下所示:
List<Integer> list = new ArrayList<>();
这样做的正确方法是什么?
答案 0 :(得分:8)
两者都是正确的,它们完全相同。第二种方式是在Java7中引入的。它被称为"diamond operator."
只要编译器可以从上下文中推断出类型参数,就可以用一组空的类型参数(&lt;&gt;)替换调用泛型类的构造函数所需的类型参数。这对尖括号被非正式地称为钻石。
答案 1 :(得分:1)
第二个被称为类型推断。如果编译器能够从上下文中推断出类型参数,那么在调用构造函数时可以使用空的类型参数集
即使是第一个也是正确的,但是对于第二个,你必须少写代码。
了解更多信息:Generics Type Inference