3

考虑以下代码:

    bdval = new BigDecimal(strval, new MathContext(attrib.getPrecision()));
    bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);

PMD非常正确地说:

对 Immutable 的无用操作

那么为什么不可变类BigDecimal要为属性导出修改器呢?

4

1 回答 1

8

setScale()不会改变它调用的 BigDecimal。它返回具有新比例值的 BigDecimal 副本。

PMD 报告错误,因为您的代码错误:它忽略了操作的结果,使操作无用。您的代码应该是:

bdval = bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);
于 2013-03-17T14:50:38.093 回答