java - 为什么不可变类提供修改器?

标签 java immutability bigdecimal

考虑以下代码:

    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/

相关文章:

java - Selenium Java 中的 setAttribute a href

java - 如何在 java 中从 float 转换为 bigDecimal?

java - Java程序,用于测试Internet连接

java - 在没有比较的情况下使用集合引用作为 if 语句条件?

java - 如何在双向关联中实例化不可变类?

java - 在 java 中初始化类时,创建 Collection 到 ImmutableSortedSet 的深拷贝

java - 多线程应用程序中的不可变对象(immutable对象) - 它是如何工作的?

hibernate - JPA 注释不保留 BigDecimal 精度

ruby - 在对它进行立方根然后重新立方后,我可以保持大量的准确性吗?

java - liferay cms 中的内容版本控制和 csv 导入