2

由于某种方法,我得到了一个 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 或手动对值进行装箱/拆箱,而不是使用自动装箱功能。我想要实现的是完全避免装箱/拆箱)

4

2 回答 2

0

正如您所指出的,由于Long没有任何add()方法(或任何其他算术方法),您别无选择,只能将其拆箱(手动或自动)以使用它进行计算,然后将结果装箱(手动或自动)。

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

于 2013-05-07T23:38:16.357 回答
0

这样做

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

它更有效,不会有警告

于 2013-05-08T01:47:33.893 回答