什么是最正确和推荐的java表达式:
new ArrayList<>();
或者
new ArrayList<String>();
我的问题出现在包含任何类型的任何Object
上(例如Map
)。
答案 0 :(得分:9)
第一种方法在Java 7中有效,你不需要使用名为Diamond Operator
的类型init。
只要编译器可以从上下文中推断出类型参数,就可以用一组空的类型参数(&lt;&gt;)替换调用泛型类的构造函数所需的类型参数。这对尖括号被非正式地称为钻石。
菱形运算符的目的是简化泛型类的实例化。所以只是为了让事情变得简单,首选。
答案 1 :(得分:0)
自Java 7以来,Diamond运算符用于降低冗长度 如果您使用版本&gt; = 7,建议使用第一个版本 浏览this。
答案 2 :(得分:0)
从Java&gt; = 7没有一个比其他更好。编译器基本上会以相同的方式处理它们。
在Java 7之前,你必须具体说明你的通用类型。
List<String> myStrings = new ArrayList<String>();
但是从Java 7开始,你可以做到:
List<String> myStrings = new ArrayList<>();
编译器会找到你的Collection的rigth目标类型并注入你的Collection。这称为Type Inference for Generic Instance Creation
再一次没有一个比另一个更好或推荐,它只是为了方便你的工作,以便你编写更少的代码。如果您是一位试图理解该语言的新java程序员,那么您应该从前开始。如果您是一位经验丰富的程序员,那么您可以执行后者