考虑以下代码:
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);