Java代码模块化,检查是否全为空

有没有干净的方法来检查它们是否都为空,例如 getDescription()、getName()、getScript()、getTargets() 和 getTrigger() 是否为空,检查一行?

              ruleBean.setDescription(rule.getDescription());
          } else if (rule.getName() != null) {
              ruleBean.setName(rule.getName());
          } else if (rule.getScript() != null) {
              ruleBean.setScript(rule.getScript());
          } else if (rule.getTargets() != null) {
              ruleBean.setTargets(rule.getTargets());
          } else if (rule.getTrigger() != null) {
              ruleBean.setTrigger(rule.getTrigger());
          } else {
              return ResponseBean.builder().withData(request.getData())
                      .withMessage("No data provided for rule update").asFailure().build();
          } ```

回答

您可以使用以下命令编写单个条件Optional

if (rule.getName() != null) {
ruleBean.setName(rule.getName());
}

变成:

Optional.ofNullable(rule.getName()).ifPresent(ruleBean::setName);

但是,将其链接起来以提供您拥有的“if else”行为更加困难。

看起来您尝试使用“if/else”检测的是是否执行了某些更新。要实现这一点,您可以使用如下方法:

<T> boolean did(T value, Consumer<? super T> consumer) {
if (value == null) return false;
consumer.accept(value);
return true;
}

然后你可以把你的链写成:

boolean didSomething =
did(rule.getName(), ruleBean::setName)
|| did(rule.getScript(), ruleBean::setScript) /* etc */;
if (!didSomething) {
// Return your error response.
}

由于 的短路行为||,这将在第一次调用did“做了”某事后停止,例如 if/else if。

如果您真的想对任何非空值应用更新,只需更改|||. didSomething如果没有任何条件匹配,则的值仍然为假,就像以前一样。


以上是Java代码模块化,检查是否全为空的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>