简化 ifPresentOrElse 链

Simplify ifPresentOrElse chain

给定代码:

  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());
如果原始 Optional 为空,

map 将 return 一个 Optional.empty(),并将 someMap.get(s) 的结果用 [=14= 包裹起来] 否则。