请帮我把我的头围绕为什么这不起作用。 (这不是一个实际的问题,这是对OCPJP考试心理锻炼; Tibial。)Java:自动拆箱与铸造相结合
public class ImplicitConversions {
Integer iBoxed;
short sPrimitive = (short)iBoxed;
}
//编译器错误:不兼容的类型;需要:简短,找到:整数
我假设编译器试图首先没有(或之前)取消装箱,而例如一个算术运算(iBoxed + iBoxed)会首先解除它。因此,可以肯定地说,自动装箱/取消装箱在操作顺序(一元,算术,关系,逻辑,有条件,赋值)中的位置以及它到底在哪里?
我一直在阅读关于在源代码下的铸造转换(以确保我与1.6兼容),但这一个逃避我。谢谢。 http://docs.oracle.com/javase/specs/jls/se5.0/html/conversions.html#20232
您正在使用抢先式数据类型,这是不允许的 – 2014-09-29 15:11:30
@MuhammadRamahy该如何工作? 'Integer'和'Short'之间没有继承关系。 'short sPrimitive =(Short)iBoxed;'甚至不会编译,而'short sPrimitive =(Short)(Object)iBoxed;'编译时,编译器的类型检查被绕过是没有用的。运行时异常将被抛出。 – 5gon12eder 2014-09-30 00:22:27
你是对的。我不知道我为什么这么说。 – 2014-10-01 11:19:37