有人在另一个答案上发布了代码:
List<ISpeak> animalsThatTalk = new ArrayList<ISpeak>();
&lt;&gt;是什么办?
更新
我知道我的第二个例子不会编译......由于混乱,我已经改写了我的问题。
答案 0 :(得分:1)
似乎您的问题是使用&lt;&gt; vs()。集合通常要求您为集合指定参数或类型。 &LT;&GT;习惯这样做。
因此,在您的示例中,正在创建一个类型为ISpeak的列表
List<ISpeak>
您还可以创建整数列表
List<Integer>
&lt;&gt;只是允许您定义集合将包含的对象类型。
第二个例子
List (Speak) animalsThatTalk
不会编译。编译器将尝试使用Speak参数调用函数List。
答案 1 :(得分:0)
这只是语言的语法......第二种语言在Java中无效,虽然它几乎可以用像D这样的语言编译。这就是他们如何决定它,这不是对或错。他们决定将类型参数放在插入符号中,因为它们不是变量,因此它们不像普通参数。
答案 2 :(得分:0)
尖括号,即<...>
,用于类型参数。你必须提供一种类型,例如Integer
或String
。圆括号用于值参数,您必须提供一个值,例如1或“Hello World”。
示例:
new ArrayList<String>(3)
这定义了一个具有初始容量3的新字符串列表。String
是类型参数。 3
是一个值参数。