为什么Java不支持强制和自动装箱?

her*_*ung 6 java autoboxing

可能重复:
Java:长结果= -1:无法从int转换为long

例如Integer foo = 4,Long foo = 4L两者都编译,但Long foo = 4没有.这有什么理由吗?

Bar*_*chs 5

Long foo = 4;
Run Code Online (Sandbox Code Playgroud)

表示:将int值 4分配给class 的对象Long。它将尝试使用自动装箱来执行此操作并失败,因为自动装箱仅适用于适当的原语。它可以通过两种方式修复:

Long foo = (long) 4;
Long foo = 4L;
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,您将int4 转换为long4。在第二种情况下,您提供了一个 long。

回答这个问题:Java 不支持自动转换,并且打字非常严格,这可能是它不支持自动转换的原因。