Ответ на ваш вопрос здесь:
Object obj = new Integer(42); //auto boxing // true
Integer iObj = 43; //direct intialization //true
iObj = obj // false
iObj = (Integer) obj; // manual boxing
iObj = obj is false
, поскольку obj
является ссылкой на Object
, а iObj
имеет значение Interger
. Object
является родителем для всех, поэтому целочисленный тип iObj
является дочерним для obj
и, следовательно, false.
In short, child can be auto- boxed to parent but the vice-versa is not possible