Как работает java auto boxing / unboxing?

Начиная с JDK 5.0, автоматический бокс / распаковка была введена в Java, уловка проста и полезна, но когда я начал тестировать различные преобразования между классами-обертками и примитивными типами, я действительно запутался, например, как работает концепция автоматического бокса в Java. :

Заниматься боксом

int intValue = 0;
Integer intObject = intValue;
byte byteValue = 0;
intObject = byteValue; // ==> Error

Попробовав разные случаи (short, long, float, double), единственный случай, который принимается компилятором, это когда тип значения справа от оператора аффектацииint, Когда я посмотрел внутрь источникаInteger.class я обнаружил, что он реализует только один конструктор сint параметр.

Итак, мой вывод заключается в том, что концепция автоматического бокса основана на конструкторе, реализованном в классе-обертке. Я хочу знать, является ли этот вывод верным или есть другой концепт, используемый автобоксом?

Распаковка

Integer intObject = new Integer(0);
byte byteValue = intObject; // ==> Error (the same Error with short)
int intValue = intObject; 
double doubleValue = intObject;

Мой вывод о распаковке состоит в том, что класс-оболочка дает значение, обернутое объектом в соответствующем типе (Integer ==>int), то компилятор использует обычные правила преобразования примитивных типов (byte =>short =>int =>long =>float =>double). Я хочу знать, является ли этот вывод верным или есть другая концепция, используемая для автоматической распаковки?

Спасибо за продвижение :)

Ответы на вопрос(3)

Ваш ответ на вопрос