泛型语法:类与原始数据类型的区别

3

为什么这个不能工作:

ArrayList<LinkedList<int>> 

这个做了什么:

ArrayList<LinkedList<Integer>> 

???


请纠正您问题中的拼写错误。syntx -> syntax,我还没有足够的声望来这样做。 - Timo Westkämper
在这个网站上,您必须通过点击勾选来接受答案,这样它就会变成绿色。 - Martijn Courteaux
3个回答

7

因为Java只能在泛型(在<>之间)中使用类(而不是原始类型)和数组(也包括原始类型的数组)。

List<Integer> list;

这也是为什么有基本类型的包装类的原因:

int -> Integer
boolean -> Boolean
double -> Double
byte -> Byte
etc...

我同意,但最近在面试中,我被要求编写一个通用类,该类可以接受基本类型和对象?我无法回答那个问题。我想知道这个问题是否有效。 - plzdontkillme
也许面试官需要的是 public MyClass<T extends Number> 这段代码?但这样对于布尔类型是不起作用的。 - Martijn Courteaux

1

<> 中的参数必须是一个对象,因为这些类只能容纳对象。

int 是一种原始类型,而 Integer 只是该类型的包装类,因此 Integer 是可以使用的。


是的,我明白了 :) 我以为它适用于 LinkedList<int>,所以让我发疯了,只是被 C++ 搞混了。 - yoavstr

0

因为定义是 LinkedList< T >,只有 Object 才能在这里使用 < T >

int 是原始类型,所以 LinkedList< int > - 编译错误
Integer 是对象,LinkedList < Integer > - 正确的选择


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接