总结if语句,并从另一个对象读取if条件,如String[](Dynamic if)



我有一个复杂的对象(该对象的名称是"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.isNullobject == 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上使用注释,以更灵活的方式指定验证逻辑。

最新更新