检查对象是否使用Java正确构建

詹姆士遗物:

这是我遇到的一个普遍问题。我想知道是否有人知道任何合适的设计模式或技术。

private ExternalObject personObject; 
private String name;
private int age;
private String address;
private String postCode;

public MyBuilderClass(ExternalObject obj)
     this.personObject=obj;
     build();
}

public build() {
    setName(personObject.getName());
    setAge(personObject.getAge());
    setAddress(personObject.getAddress());
    setPostCode(personObject.getPostCode());
    .
    .
    . many more setters
}

上面的类从队列中获取外部对象,并构造MyBuilderClass对象。

如果所有字段都设置为非null非空值,则将成功构建MyBuilderClass对象。

将有许多无法构建的MyBuilderClass对象,因为外部对象会丢失数据。

我的问题是,检测对象是否已正确构建的最佳方法是什么?

  • 我可以在set方法中检查null或空值并引发异常。这种方法的问题是抛出异常的代价很高,并且会阻塞日志文件,因为在很多情况下无法构建对象。

我还可以使用其他哪些方法?

AdamPillingTech:

正如前面的答案所建议的那样,这里有2个选项,您尝试设置变量后都应添加其中两个。

使用反射来检查任何变量是否为空。(如注释中所述,这将检查该对象中的所有字段,但请小心任何超类中的字段)。

public boolean checkNull() throws IllegalAccessException {
    for (Field f : getClass().getDeclaredFields())
        if (f.get(this) != null)
            return false;
    return true;            
}

对每个变量执行空检查。

    boolean isValidObject = !Stream.of(name, age, ...).anyMatch(Objects::isNull);

先前的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章