考虑以下代码:

    bdval = new BigDecimal(strval, new MathContext(attrib.getPrecision()));
    bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);
PMD相当正确地说:

对不可变的无用操作

那么,为什么像BigDecimal这样的不可变类会为属性导出变异器呢?

最佳答案

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

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

bdval = bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);

07-24 15:22