Приведение Java с помощью примитивных оболочек - разница между Java 6 и Java 8 - PullRequest
0 голосов
/ 08 февраля 2019

Я натолкнулся на этот фрагмент устаревшего кода (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, когда речь идет о примитивных оболочках способом, который может объяснить наблюдаемое поведение?

...