【发布时间】:2014-08-13 17:27:22
【问题描述】:
final byte b = 12;
Short s = b;
Integer i = b;
对于 Short,程序编译正常,但对于 Integer,编译失败,并显示“不兼容的类型”消息。
我很难理解这种行为。对于这种特定情况,我找不到任何东西..
【问题讨论】:
-
使用 int 而不是 Integer
-
这不是 100% 的重复,因为它没有说明为什么允许
Short,但Integer不允许,所以我撤回了密切投票。不过非常相关:stackoverflow.com/questions/7014171/… -
在我看来,“非常相关”的问题没有足够的答案——它只是让一群人胡乱猜测。我认为关闭它是错误的。
-
情节变厚了:删除 'final' 关键字会导致 Short 自动装箱也会生成编译器错误。这可能是导致这种奇怪行为原因的一些线索。
-
还有一个奇怪的细微差别:
Character c = b编译也很好。但是chars 没有签名!那么当您将b更改为-12时会发生什么?然后编译失败!
标签: java type-conversion wrapper autoboxing