在JLS中找到了解释,请
参见表5.1
下的https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.5
。
将转换转换为原始类型
Long l = new Long(15); Object o = l;
将Object Type转换为Primitive时,它将 变窄,然后再拆箱 。
double d1=(double)o;
在上面的语句中,我们尝试将 Object缩小为Double ,但是由于 实际值是Long, 因此根据 5.1.6中
定义的缩小转换规则,在运行时它将抛出 ClassCastException 。 缩小参考转换
将Long Type转换为double时,它将 取消装箱,然后扩大 。
double d2 =(double)l;
它将首先通过调用longvalue()方法将Long值拆箱,然后从long扩展为double,这可能没有错误。



