为什么 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[] 中。其他基元也会发生同样的事情 - DoubleCharacterBoolean 的实例用于代替相应的基元值。