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

pro*_*Fun 41 java integer arraylist

我想声明一个ArrayList类型int.

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

ArrayList<int> list1 = new ArrayList<int>();
Run Code Online (Sandbox Code Playgroud)

但以下工作:

ArrayList<Integer> list1 = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

Zac*_*tta 39

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

当你声明时ArrayList<Integer> list1 = new ArrayList<Integer>(),你正在创建一个ArrayList将存储Integer类型的文件,而不是int基元.

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


Oli*_*rth 12

因为int原始类型.只有引用类型可以用作通用参数.


ame*_*eed 8

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

这是因为像这样ArrayList的类是使用对象实现的。由于每个类都继承自Object,因此编译器可以仅插入其他类。但是基本类型(如int)不会从Object继承,因为它们不是类。因此,Sun / Oracle进行了Integer此类培训。

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