简化ifPresentOrElse链

时间:2019-07-16 12:00:03

标签: java optional chain

给出代码:

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

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

1 个答案:

答案 0 :(得分:6)

使用map

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

map将在原始Optional.empty()为空的情况下返回Optional,否则将someMap.get(s)的结果与Optional包装在一起。