从构造函数中调用可重写的方法是一个坏主意。做更多这样的事情:
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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)