java - 是否可以在不装箱/拆箱的情况下添加包装数字?

标签 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 或手动对值进行装箱/拆箱,而不是使用自动装箱功能。我想要实现的是完全避免装箱/拆箱)

最佳答案

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

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

关于java - 是否可以在不装箱/拆箱的情况下添加包装数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430276/

相关文章:

java - 如何在 Bazel 中依赖测试 Maven jar?

java - Grails - 创建数据库 View

python - 从文件 : how would you make this better? 中找到 N 最大的行

Python 对 groupby 求和两次

php - 快速计算每种产品过去 6、3、1 个月的平均月销售额

java - 我可以使用字符串作为 Encog 理想值/输出吗?

Java SWT 显示 StyledText 的行号

python - Python 中的整数错误

R 对 n 列中的每 n 行求和

java - 表达式的类型必须是数组类型,但它解析为字符串 | java