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
简短的答案是泛型(如ArrayList<Integer>)不接受基本类型(int),仅接受对象(Integer)。
这是因为像这样ArrayList的类是使用对象实现的。由于每个类都继承自Object,因此编译器可以仅插入其他类。但是基本类型(如int)不会从Object继承,因为它们不是类。因此,Sun / Oracle进行了Integer此类培训。
因此,简而言之:int不是Object。