Java 集合。为什么没有基元类型?
2022-09-03 13:35:18
可能的重复:
在java集合中存储基元值?
我的Java教科书说集合的元素,例如ArrayList,不能是基元类型。这是有原因的吗?我的意思是,是Sun的某个人决定了这一点,还是对这样做有一些障碍?我理解我的例子半回答了我的问题,因为ArrayList需要一个对象,而基元不是对象。但是我想为什么他们不能有原始类型呢?
可能的重复:
在java集合中存储基元值?
我的Java教科书说集合的元素,例如ArrayList,不能是基元类型。这是有原因的吗?我的意思是,是Sun的某个人决定了这一点,还是对这样做有一些障碍?我理解我的例子半回答了我的问题,因为ArrayList需要一个对象,而基元不是对象。但是我想为什么他们不能有原始类型呢?
这样做有什么障碍吗?
您可以编写几乎相同的版本,这些版本是为存储非类类型之一而量身定制的,例如 等等。防止这种情况的障碍是,这些类将出现爆炸式增长,因为您需要将基元类型的数量乘以集合类型的数量。为了保持标准集合框架的可管理性,排除了这种情况。ArrayList
IntegerArrayList
为了在语言中更巧妙地解决这个问题,你需要泛型来允许基元类型作为类型参数,并改善数组和泛型之间的交互。
存储未包装的基元会使集合代码变得非常复杂。然而,对于包装器( for 等),代码是相当直接的。几年来,Java一直支持“自动装箱”,这意味着如果你给出一个预期的位置,那么它将被包装在一个实例中(反之亦然)。Integer
int
int
Integer
int
Integer