【发布时间】:2011-01-31 02:08:19
【问题描述】:
Java 集合只存储对象,不存储原始类型;但是我们可以存储包装类。
为什么会有这个限制?
【问题讨论】:
-
当您处理原语并想要使用队列发送并且您的发送速率非常快时,此约束确实很糟糕。我现在正在处理自动装箱花费太多时间的问题。
-
从技术上讲,原始类型是对象(确切地说是此类的单个实例),它们只是不是由
class定义的,而是由 JVM 定义的。语句int i = 1定义了一个指向在JVM 中定义int的对象的单例实例的指针,设置为在JVM 中某处定义的值1。是的,Java 中的指针——这只是通过语言实现从你那里抽象出来的。基元不能用作泛型,因为语言谓词所有泛型类型必须是超类型Object- 因此A<?>在运行时编译为A<Object>。 -
@RobertEFry 原始类型在 Java 中是 not objects,所以你写的关于单例实例的所有内容都是错误的和令人困惑的。我建议阅读 Java 语言规范的 "Types, Values, and Variables" 章节,该章节定义了对象是什么:“对象(第 4.3.1 节)是类类型的动态创建实例或动态创建的数组。”
标签: java collections types primitive-types