Никак не пойму почему последнее преобразование работает, а предыдущие два нет.
т.е. как я понимаю можно записать так:
Object o = new Integer();
o = 123;
т.е. o - это ссылка типа Object и в нее помещается объект класса-обертки Integer, затем мы присваиваем о значение 123.
В общем я запутался, не понимаю почему работает последняя строка а предыдущие 2 нет, ведь во всех трех примерах о - это ссылка.
Object o = 123; //o хранит Integer
String s2 = (String) o;
Ошибка во время исполнения!
Невозможно привести ссылку на число к ссылке на строку.
Object o = 123; //o хранит Integer
Float s2 = (Float) o;
Ошибка во время исполнения!
Невозможно привести ссылку на целое число к ссылке на дробное число.
Object o = 123f; // o хранит Float
Float s2 = (Float) o;
Приведение к своему типу. Операция сужения ссылочного типа.