汇总if语句并从另一个对象(如string[])读取if条件(动态if)

jhiyze9q  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(405)

我有一个复杂的对象(该对象的名称是“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 . 如果你有更好的方法,我想知道。
第二:我想从另一个对象读取if条件参数,比如 String[] ,我从application.properties读取了这个对象。类似地,我想创建一个动态if语句。请参见下面的伪代码:

String[] params = {"action" , "subAction" , "lob", ...};
if(input."params[0]".isEmpty() || input."params[1]".isEmpty() || ...)
bvjxkvbb

bvjxkvbb1#

ApacheCommonsBeanutils有一个类,可以让您概括这样的属性。
https://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/beanutils.html#getproperty-java.lang.object-java.lang.string-
基本上,它是一个围绕反射的 Package 器,所以您只需要提供一个带有属性名的字符串,然后检查返回值是否为null和空。

for (String prop : properties) {
    String propValue = BeanUtils.getProperty(object, prop);
    if (propValue == null || propValue != null) throw new Exception("Something");
}

或者,hibernate验证器将允许您使用bean上的注解以更灵活的方式指定验证逻辑。

相关问题