这与定义变量类型有何不同?

时间:2010-12-29 21:55:26

标签: java

有人在另一个答案上发布了代码:

List<ISpeak> animalsThatTalk = new ArrayList<ISpeak>();

&lt;&gt;是什么办?

更新

我知道我的第二个例子不会编译......由于混乱,我已经改写了我的问题。

3 个答案:

答案 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)

尖括号,即<...>,用于类型参数。你必须提供一种类型,例如IntegerString。圆括号用于值参数,您必须提供一个值,例如1或“Hello World”。

示例:

new ArrayList<String>(3)

这定义了一个具有初始容量3的新字符串列表。String是类型参数。 3是一个值参数。