2016-06-12 4 views
1

Object[] может хранить любой объект из любого класса, потому что каждый класс в Java расширяет java.lang.Object.Почему объект [] хранит примитивы?

Я не думаю, что примитивы простираются от Object, так почему мы можем хранить их как следующее?

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

Вопрос заключается в том, почему может примитивы храниться в массиве объектов и не Авто бокс произойдет или нет в приведенном выше коде?

+1

Довольно уверен, что вы сами можете проверить авто бокс, используя 'instanceof', no? –

+0

Когда вы запустите код, autoboxing изменит '1' и' 2' на их типы-обертки. – Meinkraft

+0

Связанный: http://stackoverflow.com/questions/27647407/why-do-we-use-autoboxing-and-unboxing-in-java –

ответ

6

примитивных типов получает автоматически загнали их соответствующие тип оболочек, так, например: 1 становится Integer.valueOf(1) и это экземпляр Integer класса, который простирается от Object, следовательно, его можно хранить в Object[]. То же самое происходит и с другими примитивами - вместо соответствующих примитивных значений используются экземпляры Double, Character и Boolean.

+6

Собственно, автобоксинг не замените '1' на' new Integer (1) ', но на' Integer.valueOf (1) ', который может возвращать кешированный объект Integer. – Jesper

Смежные вопросы