可选/消费可选并返回另一个可选

我遇到了一个问题,我想我需要类似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(...).


慕田峪7331174
浏览 173回答 2
2回答

汪汪一只猫

嗯,刚刚发现 Java 9添加了or(...)-method 这正是我想要的(这在 Java 8 中不可用,这就是为什么我不知道的原因)。

繁星coding

如果你需要做的,与Java8:既orElse和orElseGet被返回String,你可以用它们放入Optional,像public Optional<Foo> getSomething(){&nbsp; &nbsp; &nbsp;return Optional.ofNullable(service.getFooFromBla().orElse(service.getFooFromBlubb()));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java