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