You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用BigDecimal.add方法相加两个对象无效果是什么原因?

核心原因

BigDecimal是不可变类,它的所有数值运算方法(包括add()、subtract()、multiply()等)都不会修改调用方法的原对象,而是返回一个全新的BigDecimal实例承载运算结果。你当前的代码仅调用了this.balanceWallet.add(balanceWallet),但没有接收该方法返回的新对象,原有this.balanceWallet指向的实例不会发生任何变更,所以看起来代码执行没有效果,IDE的提示正是在提醒你忽略了add()方法的返回值。

修复代码

将运算返回的新对象赋值给this.balanceWallet即可实现余额累加:

public void addBalanceWallet(BigDecimal balanceWallet) {
    this.balanceWallet = this.balanceWallet.add(balanceWallet);
}
优化建议

可以补充参数校验和空值处理,避免出现空指针或不符合业务逻辑的异常:

public void addBalanceWallet(BigDecimal balanceWallet) {
    // 校验传入的新增余额合法性
    if (balanceWallet == null || balanceWallet.compareTo(BigDecimal.ZERO) < 0) {
        throw new IllegalArgumentException("新增余额不能为null或负数");
    }
    // 兼容当前余额为null的情况
    if (this.balanceWallet == null) {
        this.balanceWallet = BigDecimal.ZERO;
    }
    this.balanceWallet = this.balanceWallet.add(balanceWallet);
}

内容的提问来源于stack exchange,提问作者JONKI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:18:02