是否可以在没有装箱/拆箱的情况下添加包裹的数字?

时间:2013-05-07 23:31:37

标签: java numbers sum wrapper

由于某些方法,我得到Long值。现在,当我想为该数字添加1时,编译器会警告我有关装箱/取消装箱以执行总和的值。

public Long getLongValue() {return new Long(5L);}
// ...
Long val = getLongValue();
val++; // Warning: The expression of type Long is unboxed into long
val = val + 1L; // Warning: The expression of type Long is unboxed into long

由于Long类似乎没有“添加”方法,有没有办法避免这种自动装箱行为?

(注意:我知道我可以只是@suppressWarnings或手动装箱/取消装箱值而不是使用Autoboxing功能。我想要达到的目的是完全避免装箱/拆箱)

2 个答案:

答案 0 :(得分:0)

正如您所指出的那样,Long没有任何add()方法(或任何其他算术方法),您别无选择,只能取消装箱(手动或自动),以便用它进行计算然后打包(手动或自动)结果。

如果你在任何计算之前取消装箱,在最后进行所有计算和重新装箱,而不是在每次计算(和子计算)期间装箱和拆箱,它可能会更高效。

答案 1 :(得分:0)

这样做

    long val = getLongValue();
    val++; 
    val = val + 1L;

效率更高,没有警告