Java:自动拆箱与铸造相结合

Dai*_*ter 2 java autoboxing casting

请帮助我解决为什么这不起作用.(这不是一个实际问题,它是OCPJP考试的精神练习.)

public class ImplicitConversions {

Integer iBoxed;
short sPrimitive = (short)iBoxed;

}
Run Code Online (Sandbox Code Playgroud)

//编译错误:不兼容的类型; 要求:简短,发现:整数

我假设编译器尝试在没有(或之前)拆箱的情况下首先进行投射,而例如算术运算(iBoxed + iBoxed)将首先取消装箱.因此,可以肯定地说,自动装箱/拆箱在操作顺序(一元,算术,关系,逻辑,条件,分配)中有它的位置,它究竟在哪里?

我一直在阅读下面的源代码中的转换(为了确保我与1.6兼容),但是这个让我望而却步.谢谢. http://docs.oracle.com/javase/specs/jls/se5.0/html/conversions.html#20232

Sot*_*lis 6

这个

(short)iBoxed
Run Code Online (Sandbox Code Playgroud)

是一个独立的表达式,不依赖于它的上下文.您要做的是将Integer参考值强制转换为short原始值.这不是允许的转换上下文.(参见本章后面的表格.)