使用原始包装器进行Java转换-Java 6和Java 8之间的区别

时间:2019-02-08 08:43:29

标签: java casting wrapper primitive

我遇到了这段遗留代码(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的区别可以解释观察到的行为吗?

0 个答案:

没有答案