3

次のコードを検討してください。

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

PMDは次のように言っています。

不変の無駄な操作

では、なぜイミュータブル クラスのようなBigDecimalプロパティのミューテーターをエクスポートするのでしょうか?

4

1 に答える 1

8

setScale()呼び出された BigDecimal を変更しません。新しいスケール値を持つ BigDecimal のコピーを返します。

あなたのコードが間違っているため、PMD はエラーを報告します。操作の結果が無視され、操作が役に立たなくなります。コードは次のようになります。

bdval = bdval.setScale(attrib.getScale(), RoundingMode.HALF_UP);
于 2013-03-17T14:50:38.093 に答える