【问题标题】:Why primitive datatypes are not allowed in java.util.ArrayList? [duplicate]为什么 java.util.ArrayList 中不允许使用原始数据类型? [复制]
【发布时间】:2011-07-21 20:35:00
【问题描述】:

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

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

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

【问题讨论】:

标签: java arraylist


【解决方案1】:

java 的所有收集类都存储它们收集的对象的内存位置。原始值不适合相同的定义。
为了规避这个问题,JDK5 及更高版本具有 autoboxing - 其中原语在添加或从集合中读取时被转换为适当的对象并返回。有关此主题,请参阅official JDK tutorial

检查JDK5 source code for ArrayList 有助于更好地理解:创建ArrayList<E> 包括将Object[] 数组转换为E[]

【讨论】:

    【解决方案2】:

    因为对于泛型(在 之间),Java 只能使用类(而不是原始类型)和数组(对于原始类型也是数组)。

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

    int -> 整数

    布尔值 -> 布尔值

    双 -> 双

    字节 -> 字节等...

    【讨论】:

    • 这并不能真正回答为什么“Java 不能在 ArrayList 中使用原始类型,因为它只能使用 ArrayList 中的类”并不能解决为什么它不能使用原始类型.特别是当问题的措辞表明提问者理解它只接受引用类型时。
    猜你喜欢
    • 2013-10-30
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2016-04-04
    • 1970-01-01
    • 2014-01-26
    • 2023-03-21
    相关资源
    最近更新 更多