为什么Object []存储原语?

Zin*_*inn 1 java primitive autoboxing

Object[]可以存储来自任何类的任何对象,因为Java中的每个类都会扩展java.lang.Object.

我不认为原语会延伸Object,为什么我们可以将它们存储起来如下?

Object[] obj_arr = {1, 2, 1.2, 'a', false, new MyClass(), null};
Run Code Online (Sandbox Code Playgroud)

问题是为什么原语可以存储在Object数组中并且在上面的代码中是否发生了自动装箱

Ósc*_*pez 6

原始类型被自动装入它们各自的包装器类型中,因此例如:1变为,Integer.valueOf(1)并且这是Integer从中扩展的类的实例Object,因此它可以存储到Object[].对于其他基元也会发生同样的事情 - 实例Double,CharacterBoolean用它们代替相应的原始值.

  • 实际上,autoboxing并不是用`new Integer(1)`替换`1`而是用`Integer.valueOf(1)`替换它,它可以返回一个缓存的`Integer`对象. (6认同)