Java 集合。为什么没有基元类型?

可能的重复:
在java集合中存储基元值?

我的Java教科书说集合的元素,例如ArrayList,不能是基元类型。这是有原因的吗?我的意思是,是Sun的某个人决定了这一点,还是对这样做有一些障碍?我理解我的例子半回答了我的问题,因为ArrayList需要一个对象,而基元不是对象。但是我想为什么他们不能有原始类型呢?


答案 1

这样做有什么障碍吗?

您可以编写几乎相同的版本,这些版本是为存储非类类型之一而量身定制的,例如 等等。防止这种情况的障碍是,这些类将出现爆炸式增长,因为您需要将基元类型的数量乘以集合类型的数量。为了保持标准集合框架的可管理性,排除了这种情况。ArrayListIntegerArrayList

为了在语言中更巧妙地解决这个问题,你需要泛型来允许基元类型作为类型参数,并改善数组和泛型之间的交互。


答案 2

存储未包装的基元会使集合代码变得非常复杂。然而,对于包装器( for 等),代码是相当直接的。几年来,Java一直支持“自动装箱”,这意味着如果你给出一个预期的位置,那么它将被包装在一个实例中(反之亦然)。IntegerintintIntegerintInteger