一般的数据类都应该有自己的数据合法性检查,如一个Person类,它的年龄属性是int型的,但是如果给它赋值10000则为不合法,一个人不可能活那么长时间。因此需要在创建该类的对象时必需对其进行合法性检查,若构造方法传入的是非法数据,则不让其创建该对象,并抛出异常。也许大多数人认为只需要对构造方法传入的参数进行合法性检查即可。如下所示:
class ValidClass
{
int dataValid1; String dataValid2;
public ValidClass(int i, String str)
{
check(int i, String str);
dataValid1 = i;
dataValid2 = str;
}
void check(int i, String str)
{
if(i >100 && i <= 0) throws new RuntimeException("message");
if(str == "str") throws new RuntimeException("message");
}
void setDataValid1(int dataValid1)
{
this.dataValid1 = dataValid1;
}
}
实际上这种合法性并不可靠,这样只是保证了在构造方法中传入的数据是合法的,但是不能保证程序员在使用该对象时能传入合法的数据。如下程序代码