检查它自己的成员的类方法不是null?

时间:2012-10-16 16:06:42

标签: java nullpointerexception

我有一个表示数据库中表的模型类。 该表有7列,因此该类有7个属性。其中一些被允许为空,另一些则不被允许。

因此,当我将一个人传递给公共函数时,我检查不允许为null的属性是否为空。正常检查如

if(person.getName() == null || person.getSurname() == null ...)
     throw new NullPointerException();

我现在想知道在Person类中创建函数是否有任何缺点,基本上这样做?像

public void checkFullDataset()
{
   if(name == null || surname() == null ...)
       throw new NullPointerException();
   return;
}

因此,每当我与某人合作时,我都会调用此方法,而不是手动测试所有字段。如果将来更改表(添加新字段,返回null / not null行为等)也会有所帮助,因为我只需要更改此函数而不是代码中的许多“if's”。

3 个答案:

答案 0 :(得分:1)

两个想法:

  1. 最好禁用空构造函数,并引入一个以所有字段作为参数并将检查放在那里的构造函数。

  2. 如果您想添加此类方法,最好使会话返回boolean类似于标准check函数,例如hasElement()hasNext()和{{ 1}}等让用户处理它。

    iEmpty()

答案 1 :(得分:0)

满足您需求的最佳解决方案是让您的Person类不可变,并使用构建器模式在初始化时检查必填字段,然后检查从不

请看这个示例:http://xavimiro.blogspot.fr/2008/04/new-builder-pattern.html

答案 2 :(得分:0)

你似乎发现的是“阶级不变”的概念。有编程语言,例如Eiffel语言在进入和退出类的每个公共函数之前检查约束,如果不满足则抛出异常;几乎就是你自己做的事情。

还要查找功能前置条件和后置条件,类似的概念。

根据代码的不同,您可能会发现检查是性能问题,在这种情况下,您可以针对生产代码禁用它们