为什么 Object[] 可以存储原语?
Why can Object[] store primitives?
Object[]
可以存储来自任何 class 的任何对象,因为 Java 中的每个 class 都扩展了 java.lang.Object
.
我不认为基元是从 Object
扩展而来的,那么为什么我们可以像下面这样存储它们呢?
Object[] obj_arr = {1, 2, 1.2, 'a', false, new MyClass(), null};
问题是为什么图元可以存储在对象数组中,上面的代码中有没有自动装箱?
原始类型被自动装箱到它们各自的包装器类型中,例如:1
变为 Integer.valueOf(1)
并且这是 Integer
class 的一个实例从 Object
扩展而来,因此它可以存储到 Object[]
中。其他基元也会发生同样的事情 - Double
、Character
和 Boolean
的实例用于代替相应的基元值。
Object[]
可以存储来自任何 class 的任何对象,因为 Java 中的每个 class 都扩展了 java.lang.Object
.
我不认为基元是从 Object
扩展而来的,那么为什么我们可以像下面这样存储它们呢?
Object[] obj_arr = {1, 2, 1.2, 'a', false, new MyClass(), null};
问题是为什么图元可以存储在对象数组中,上面的代码中有没有自动装箱?
原始类型被自动装箱到它们各自的包装器类型中,例如:1
变为 Integer.valueOf(1)
并且这是 Integer
class 的一个实例从 Object
扩展而来,因此它可以存储到 Object[]
中。其他基元也会发生同样的事情 - Double
、Character
和 Boolean
的实例用于代替相应的基元值。