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

时间:2011-03-24 04:52:14

标签: java arraylist

  

可能重复:
  Storing primitive values in a Java collection?

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

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

2 个答案:

答案 0 :(得分:7)

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

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

  

int - >整数

     

布尔值 - >布尔

     

double - >双

     

字节 - >字节等...

答案 1 :(得分:7)

java的所有集合类都存储它们收集的对象的内存位置。原始值不适合到相同的定义 为了解决这个问题,JDK5及其后续版本具有 autoboxing - 其中原语被转换为适当的对象,并在从集合中添加或读取时返回。

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