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



我想声明一个类型为intArrayList

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

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

但是下面的工作:

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

?

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

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

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

因为int基本类型。只有引用类型可以用作泛型形参。

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

这是因为像ArrayList这样的类是使用对象实现的。由于每个类都继承自Object,编译器可以直接插入其他类。但是基本类型(如int)不继承Object,因为它们不是类。因此,Sun/Oracle制作了Integer类来帮助解决这个问题。

所以,简而言之:int不是Object

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

int是一个基本数据类型,但Integer是一个类,所以arrayList数组只能接受引用类型作为其参数,而不能接受基本类型

int不是Object,因此如果list类型为int,则不能实现list。

intprimitive。它不是Object .

相关内容

  • 没有找到相关文章

最新更新