Java 当对象中的所有字段都为空时,如何优雅地进行验证?

Java 当对象中的所有字段都为空时,如何优雅地进行验证?,java,hibernate,validation,Java,Hibernate,Validation,若对象中的所有字段都为null,我想抛出异常,但检查null的传统方法看起来不太明智。还有什么方法可以做到这一点呢?试试以下方法: if (a == null && b == null && c == null) throw new AllFieldsAreNullException(); 您可能会使用编写一个通用方法来分析对象的字段,但它似乎不是执行验证的最清晰的方法。为了清晰起见,我可能会显式地进行编辑。编辑:这使用反射(java.lang.ref

若对象中的所有字段都为null,我想抛出异常,但检查null的传统方法看起来不太明智。还有什么方法可以做到这一点呢?

试试以下方法:

if (a == null && b == null && c == null) 
    throw new AllFieldsAreNullException();

您可能会使用编写一个通用方法来分析对象的字段,但它似乎不是执行验证的最清晰的方法。为了清晰起见,我可能会显式地进行编辑。

编辑:这使用反射(java.lang.reflect.Field)

您可以在此对象内创建一个方法以返回其有效状态:

public boolean isValid() {
    boolean isValid = true;

    for (int i = 0; isValid && i < this.getClass().getFields().length; ++i) {
        if (this.getClass().getFields()[i].equals(null)) {
            isValid = false;
        }
    }

    return isValid;
}

什么是
传统的
方法?小心-如果主键是从序列自动生成的,当您创建新对象时,它不会为空。传统的方法就像Marcelo的回答一样,有点异味。@Shikarn-O,参数是什么?你能给我们看一段代码吗?“传统”方法绝对没有错……参数不重要,我认为我们可以使用hibernate验证之类的方法。我认为最好写一些注释,这就是所有如果你想要一些新的领域,你需要添加新的条件if@Shikarn-O您还必须在数据库表中添加新字段,在实体中添加新属性,查看服务层、DAO和接口。
if (!field.getName().equals("aPrimaryKey_OR_aNotNullField")) {

}