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

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

Войти через центр авторизации
Похожие вопросы