考虑一下你有一个像下面这样的构造函数的类
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对类进行实例化?是类本身(例如在构造函数中)?
答案 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);
}
我希望这很清楚,如果你有其他问题,请留言。