SlandShow
@SlandShow
70% of my body is made of movies.

Почему Object можно присвоить примитивное значение?

Всегда думал, что ссылочные типы и примитивные типы никак не могут быть связаны, но вот наткнулся на этот абсурд:

public MagicClass{

 Object val = 12345; //да-да, вам не показалось, мы присваиваем ссылочному типу примитив!

 public void print(){ System.out.println(val); }

}


И вот как отреагирует компилятор:
12345

Process finished with exit code 0


Суть вопроса: Почему мы можем присваивать Object примитивное значение (Причем не только типа int, но так же и типа double, и тд) ?
  • Вопрос задан
  • 503 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
В процессе выполнения конструкции Object val = 12345 происходит автоупаковка примитивного значения типа int в объект типа Integer и присвоение его ссылки переменной val. Последнее возможно потому, что Integer наследует Object.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы