鉴于代码:

  Optional<String> myOptional = getMyOptional();
  myOptional.ifPresentOrElse(
      s -> Optional.ofNullable(someMap.get(s))
      .ifPresentOrElse(g -> {
            doSomeStuff();
          },
          () -> doErrHandling()),
      () -> doErrHandling());

现在我正在考虑如何简化链并删除重复的代码行( () -> doErrHandling() )。

最佳答案

使用 map :

Optional<String> myOptional = getMyOptional() ;
myOptional.map(s -> someMap.get(s))
          .ifPresentOrElse(g -> doSomeStuff(), () -> doErrHandling());

如果原始 map 为空,Optional.empty() 将返回 Optional,否则将 someMap.get(s) 的结果用 Optional 包装。

关于java - 简化 ifPresentOrElse 链,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57056774/

10-10 02:16