对象是否应该知道哪些参数'它需要

时间:2014-07-28 08:35:39

标签: java constructor default-value bigdecimal

考虑一下你有一个像下面这样的构造函数的类

public class Clazz {

    protected BigDecimal bigDecimal;

    public Clazz(BigDecimal bigDecimal) {
        this.bigDecimal= bigDecimal;
    }

    public BigDecimal getBigDecimal() {
        return bigDecimal;
    }

}

Clazz只接受至少为零的BigDecimals,即

new Clazz(BigDecimalUtils.minZero(someBigDecimal));

谁有责任确保只使用大于零的BigDecimals对类进行实例化?是类本身(例如在构造函数中)?

1 个答案:

答案 0 :(得分:0)

无论你想成为谁,通常我都会有类似的东西:

public void setBigDecimal(BigDecimal aBigDecimal) {
     if (aBigDecimal.longValue() > 0l) {
            this.bigDecimal = aBigDecimal;
     } else { throw new IllegalArgumentException("positive numbers only!");
}

然后让你的构造函数利用上面的方法:

public Clazz(BigDecimal b) {
    this.setBigDecimal(b);
}

我希望这很清楚,如果你有其他问题,请留言。