考虑以下代码:
bdval = new BigDecimal(strval, new MathContext(attrib.getPrecision()));
bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);
PMD非常正确地说:
Useless operation on Immutable
那么为什么像 BigDecimal
这样的不可变类会导出属性的修改器?
最佳答案
setScale()
不会改变调用它的 BigDecimal。它返回具有新标度值的 BigDecimal 副本。
PMD 报告一个错误,因为你的代码是错误的:它忽略了使操作无用的操作结果。您的代码应该是:
bdval = bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);
关于java - 为什么不可变类提供修改器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462078/