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

时间:2012-12-17 13:14:10

标签: java autoboxing

  

可能重复:
  Java: Long result = -1: cannot convert from int to long

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

1 个答案:

答案 0 :(得分:4)

Long foo = 4;

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

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

在第一种情况下,您将int 4投射到long 4.在第二种情况下,您提供了一个长的。

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