由于某种方法,我得到了一个 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 或手动对值进行装箱/拆箱,而不是使用自动装箱功能。我想要实现的是完全避免装箱/拆箱)
最佳答案
因为,正如您所指出的,Long
没有任何 add()
方法(或任何其他算术方法),您别无选择,只能拆箱(手动或自动)用它进行计算,然后将结果装箱(手动或自动)。
如果您在任何计算之前拆箱,进行所有计算,然后在最后重新装箱,而不是在每次计算(和子计算)期间装箱和拆箱,那么性能可能会更高。
关于java - 是否可以在不装箱/拆箱的情况下添加包装数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430276/