作者:奥巴马萨达姆_558 | 来源:互联网 | 2023-09-11 20:17
从构造函数中调用可重写的方法是一个坏主意。做更多这样的事情:
private String name;
private Float value;
public MySampleclass(String theName, Float theValue) {
this.name = theName;
setvalueImpl(theValue);
}
public void setName(String n) {
this.name = n;
}
public void setvalue(Float v) {
setvalueImpl(v);
}
private void setvalueImpl(Float v) {
if (v <0.0f) {
this.value = 0.0f;
} else if (v > 1.0f) {
this.value = 1.0f;
}
}
这样就可以在两个地方进行验证,并且消除了对可覆盖方法的调用。有关更多信息,请参见此问题。
如果您计划子类化MySampleclass
并且希望验证设置器可用,请声明它protected final
而不是private
。