由于某些方法,我得到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功能。我想要达到的目的是完全避免装箱/拆箱)
答案 0 :(得分:0)
正如您所指出的那样,Long
没有任何add()
方法(或任何其他算术方法),您别无选择,只能取消装箱(手动或自动),以便用它进行计算然后打包(手动或自动)结果。
如果你在任何计算之前取消装箱,在最后进行所有计算和重新装箱,而不是在每次计算(和子计算)期间装箱和拆箱,它可能会更高效。
答案 1 :(得分:0)
这样做
long val = getLongValue();
val++;
val = val + 1L;
效率更高,没有警告