6

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

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

4

1 回答 1

5
Long foo = 4;

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

Long foo = (long) 4;
Long foo = 4L;

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

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

于 2012-12-17T13:31:08.150 回答