为什么java.util.ArrayList中不允许原始数据类型?

Sel*_*vin 9 java arraylist

可能重复:
在Java集合中存储原始值?

ArrayList仅接受引用类型作为其元素,而不接受原始数据类型.尝试这样做时会产生编译时错误.

这背后的概念是什么?这似乎是一种限制,不是吗?

CMR*_*CMR 8

Java的所有集合类都存储它们收集的对象的内存位置.原始值不适合相同的定义.
为了避免这个问题,JDK5及其后续版本具有自动装箱功能 - 其中原语被转换为适当的对象,并在从集合中添加或读取时返回.

如果查看ArrayList源代码,它会使用Object数组来存储值.这是当您尝试将基元类型存储在集合中时发生自动装箱的原因之一.


dev*_*per 6

因为Java只能使用类(而不是基本类型)和数组(也是基元的数组)来表示泛型(在<和>之间).

清单清单; 这也是为什么有原始类型的包装类的原因:

int - >整数

布尔值 - >布尔值

双 - >双

byte - > Byte等...

  • 这并不是真正回答为什么“Java 不能在 ArrayList 中使用基本类型,因为它只能在 ArrayList 中使用类”,并没有解决为什么它不能使用基本类型。特别是当问题的措辞表明问题提出者理解它只接受引用类型时。 (6认同)