如果以前的方法没有结果,则调用next方法[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有一个代码块,如果methodOne返回null,我调用methodTwo。如果methodTwo返回null,我调用methodThree

Optional<Workflow> optionalWorkflow = remoteWorkflowProvider.getWorkflow(request);

if (!optionalWorkflow.isPresent()) {
  log.info("Cannot find workflow using remoteWorkflowProvider");
  optionalWorkflow = featureBasedWorkflowProvider.getWorkflow(request);
}

if (!optionalWorkflow.isPresent()) {
  log.info("Cannot find workflow using featureBasedWorkflowProvider");
  optionalWorkflow = legacyWorkflowProvider.getWorkflow(request);
}

有没有更好的方法呢?

java methods optional
1个回答
-1
投票

Optional有一些非常强大的工具,不依赖于if-then-else流。例如,查找Optional.orElse函数来清理代码:

optionalWorkflow.orElse(featureBasedWorkflowProvider.getWorkflow(request))

您还可以使用orElseGet返回lambda,它为您提供更多功能:

optionalWorkflow.orElseGet((value) -> {
   log.info("Cannot find workflow using remoteWorkflowProvider");
   return featureBasedWorkflowProvider.getWorkflow(request));
});
© www.soinside.com 2019 - 2024. All rights reserved.