Why do immutable classes provide mutators?

拟墨画扇 提交于 2019-12-02 00:50:08

问题


Consider the following code:

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

PMD quite correctly says:

Useless operation on Immutable

So why do Immutable classes like BigDecimal export mutators for properties?


回答1:


setScale() doesn't mutate the BigDecimal it's called on. It returns a copy of the BigDecimal with the new scale value.

PMD reports an error because YOUR code is wrong: it ignores the result of the operation making the operation useless. Your code should be:

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


来源:https://stackoverflow.com/questions/15462078/why-do-immutable-classes-provide-mutators

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!