原型java中不接受原语int

时间:2013-10-10 02:20:26

标签: java

我试图定义类型为int的通用LinkedList,但它会抛出一个编译错误

List<int> I = new LinkedList<int>();

3 个答案:

答案 0 :(得分:3)

你必须使用包装类来做到这一点。

  List<Integer> I = new LinkedList<Integer>();

您可以在此链接列表中插入int,因为自动装箱会自动从此Integer创建一个int对象,并将其添加到LinkedList。

答案 1 :(得分:1)

您不能将基本类型用作泛型类型。如果你真的想这样做,那就是包装类(IntegerFloat等)的用途。你可以这样做:

List<Integer> I = new LinkedList<Integer>();

由于自动装箱,您仍然可以将int放入列表中。如果您在需要int的情况下尝试使用Integer,则系统会自动使用Integer创建新的Integer.valueOf,而是使用{。}}。

此外,在Java 7中,您可以使用菱形运算符并使用它:

List<Integer> I = new LinkedList<>();

这没有任何优势,除了输入速度更快。

答案 2 :(得分:1)

这是Java primitive wrapper classes的一个原因,因为你不能使用原语作为类型参数。在您的情况下,您需要Integer

List<Integer> I = new LinkedList<Integer>();

在Java 7+中,您不需要重复类型参数:

List<Integer> I = new LinkedList<>();

另请参阅:Generics