Я натолкнулся на этот фрагмент устаревшего кода (Java 6) (это упрощенная версия, которая точно определяет мою проблему):
Object o;
o = new Long (3L);
Double d;
d = (Double) o;
Этот приведенный выше код, очевидно, не работает, поскольку обертки можно приводить только к соответствующему примитиву.типы.Я исправил это следующим образом:
Long toConvert = (Long) o;
String convert = toConvert.toString();
d= Double.parseDouble(convert);
, и он отлично работает, за исключением того, что уродливый.Я попробовал другое решение:
d = (double) o;
, и я тоже работал, но когда я проверил это решение (чистое любопытство) в новом проекте Java 8, я получил
java.lang.ClassCastException: java.lang.Long не может быть приведен к java.lang.Double
Отличается ли Java 6 от Java 8, когда речь идет о примитивных оболочках способом, который может объяснить наблюдаемое поведение?