我有一个复杂的对象(该对象的名称是"input"(,它有很多字段,我希望每个字段都为null。目前,我有以下不干净的代码:
if ((input.getAction().isEmpty() || input.getAction().isBlank()) ||
(input.getSubAction().isEmpty() || input.getSubAction().isBlank()) ||
(input.getLob().isEmpty() || input.getLob().isBlank()) ||
(input.getBusinessType().isEmpty() || input.getBusinessType().isBlank()) || ...)
正如你所看到的,我有更多的条件检查。
首先:我想总结一下这段代码。我知道我可以为每个项目检查创建一个简单的方法,也可以使用java.util.Objects.isNull
和object == null
。如果你有更好的方法,我想知道。
第二:我想从String[]
这样的另一个对象读取if条件参数,我读取了这个对象,例如从application.properties。同样,我想创建一个动态if语句。参见以下伪代码:
String[] params = {"action" , "subAction" , "lob", ...};
if(input."params[0]".isEmpty() || input."params[1]".isEmpty() || ...)
Apache commons beanutils有一个类,可以让您概括这样的属性。
https://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanUtils.html#getProperty-java.lang.Object-java.lang.String-
基本上,它是一个围绕反射的包装器,所以您只需要提供一个具有属性名称的字符串,然后检查返回值是否为null和空。
for (String prop : properties) {
String propValue = BeanUtils.getProperty(object, prop);
if (propValue == null || propValue != null) throw new Exception("Something");
}
或者,Hibernate Validator将允许您在bean上使用注释,以更灵活的方式指定验证逻辑。