为什么从int到Long的隐式转换不可能?

时间:2014-11-14 14:33:49

标签: java

我可以隐式地将int转换为long和long to Long。为什么不能将int隐式转换为Long?为什么Java不能在示例的最后一行进行隐式转换?

int i = 10; //OK
long primitiveLong = i;  //OK
Long boxedLong = primitiveLong;  //OK
boxedLong = i; //Type mismatch: cannot convert from int to Long

3 个答案:

答案 0 :(得分:7)

LongInteger是对象。拳击/拆箱仅适用于基元。 执行Long boxedLong = i就像Long boxedLong = new Integer(10)一样,这不是不行! 另外,请记住LongInteger之间没有继承,因此即使Integer i = new Long()无效

答案 1 :(得分:1)

  

在这种情况下,我在long和Long之间看到的最大区别是Long可能为null。如果有可能您可能缺少值,则Long对象将有用,因为null可以指示缺失值。如果你正在使用原语,你将不得不使用一些特殊的值来表示缺失,这可能会是一团糟。速度或大小不太可能是一个问题,除非你计划制作一百万个这样的东西,然后序列化。 (When to use Long vs long in java?

事实上,没有实际的理由。除int是基元之外,long是基元,但Long不是。

我建议您使用Long.valueOf()

所以这样:

Long longValue = Long.valueOf(InsertIntHere);

答案 2 :(得分:0)

拳击仅适用于基元。这就是原因。

试试这个:Long.valueOf(int);

Documentation

相关问题