我正在阅读Java语言的规范,关于作业的转换,我试图获得基本规则,并且有一些文献让我感到困惑。有些出版物说:
Integer s11 = (short)7;
需要扩展原始转换,然后进行装箱转换。这不是允许的转换。我理解编译错误和分配的上下文。但真的是一个扩大的原始转换? 我理解如下: 整数< - 短< - 短< - int 我看到Integer和Short之间的扩大。还是我很困惑?
答案 0 :(得分:3)
扩展原语转换是从一种原语类型转换为另一种原语类型。在您的示例中,所需的扩展基元转换是从short
到int
。
为了进行以下装箱转换(从int
到Integer
),需要扩大原始转换。
如果将表达式分为两个赋值,则类型转换会更清晰:
int s11 = (short)7; // widening primitive conversion from short to int
Integer i11 = s11; // boxing conversion from int to Integer
答案 1 :(得分:1)
是的,它正在加宽,然后是自动装箱,即int <- short
后跟Integer <- int