Inq*_*ive 3 java immutability bigdecimal
请考虑以下代码:
bdval = new BigDecimal(strval, new MathContext(attrib.getPrecision()));
bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
PMD非常正确地说:
对Immutable的无用操作
那么为什么Immutable类像BigDecimal属性的导出mutators呢?
setScale()不会改变它所调用的BigDecimal.它返回BigDecimal的副本以及新的缩放值.
PMD报告错误,因为您的代码错误:它忽略了操作的结果,使操作无效.你的代码应该是:
bdval = bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)