可选/使用可选,然后返回另一个可选

时间:2018-09-07 08:32:54

标签: java

我遇到一个问题,我想我需要像orElseMap(...) / orElseFlatMap(...)这样的东西。

我正在使用方法调用中的可选方法。如果该Optional为空,我想从另一个方法中检索另一个Optional。然后,我想返回一个Optional描述,说明是否通过两个调用之一找到了一个值。

我只是想念东西吗?

所以我想做类似的事情:

public Optional<Foo> getSomething()
{
  final Optional<Foo> foo = service.getFooFromBla()

  if (foo.isPresent())
    return foo;
  else
    return service.getFooFromBlubb();
}

我对上述解决方案并不满意,但也许这是目前唯一可行的方法。通常,如果我要解开包装,我会结合使用map(...) / flatMap(...)orElse(...) / orElseGet(...),这非常简洁。

但是我缺少方法orElseMap(...)orElseFlatMap(...)

2 个答案:

答案 0 :(得分:3)

很好,刚刚发现Java 9 addedor(...)方法正是我想要的(Java 8中不可用,这就是我不知道的原因)。

答案 1 :(得分:1)

如果您需要使用Java8来做到这一点:WKWebVieworElse都返回orElseGet,则可以将它们包装到String中,类似

Optional