为什么我不能将'int'作为ArrayList的类型?

时间:2013-01-15 23:42:21

标签: java arraylist integer

我想声明类型为ArrayList的{​​{1}}。

为什么以下内容会给我一个错误:

int

但是以下工作:

ArrayList<int> list1 = new ArrayList<int>();

7 个答案:

答案 0 :(得分:38)

ArrayList只能引用类型,而不是基元。 Integer是一个类,而不是一个原始类。

当您声明ArrayList<Integer> list1 = new ArrayList<Integer>()时,您创建的ArrayList将存储Integer类型,而不是int原语。

如果您想了解原始类型和引用类型之间的区别,请查看http://pages.cs.wisc.edu/~hasti/cs302/examples/primitiveVsRef.html

答案 1 :(得分:12)

因为int基元类型。只有引用类型可以用作通用参数。

答案 2 :(得分:5)

简短的回答是泛型(如ArrayList<Integer>)不接受基本类型(int),只接受对象(Integer)。

这是因为像ArrayList这样的类被实现为使用对象。由于每个类都继承自Object,因此编译器只需插入其他类即可。但原始类型(如int)不会从Object继承,因为它们不是类。因此,Sun / Oracle提供了Integer类来帮助解决这个问题。

因此,简而言之:int不是Object

答案 3 :(得分:0)

intprimitive。它不是Object

有关详细信息,请参阅此link

答案 4 :(得分:0)

int是原始数据类型,但Integer是一个类,因此arrayList数组只能将引用类型作为其参数而不是基本类型

答案 5 :(得分:0)

上面的所有答案都回答了原因,但这个问题的根源是频繁的自动装箱和原始数据类型的拆箱。这个问题已经由IntBuffer或ChadBuffer解决,或者你在nio文件夹中命名它已经存在的基本类型。下次如果要使用原始ArrayList,请不要使用List而是使用IntBuffer

答案 6 :(得分:0)

int不是Object,因此如果列表类型为int,则无法完成列表的实现。

相关问题