可能重复:
Java: Long result = -1: cannot convert from int to long
例如Integer foo = 4
和Long foo = 4L
都编译,但Long foo = 4
没有。这有什么理由吗?
答案 0 :(得分:4)
Long foo = 4;
表示:将int
值4分配给类Long
的对象。它将尝试使用自动装箱来执行此操作并失败,因为自动装箱仅适用于适当的原语。它可以通过两种方式修复:
Long foo = (long) 4;
Long foo = 4L;
在第一种情况下,您将int
4投射到long
4.在第二种情况下,您提供了一个长的。
要回答这个问题:Java不支持自动转换,并且在输入时非常严格,这可能是它不能自动支持它的原因。