为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪7331174 2021-09-03 16:58:40
我遇到了一个问题,我想我需要类似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 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-09-03
?
繁星coding

TA贡献1797条经验 获得超4个赞

如果你需要做的,与Java8:既orElse和orElseGet被返回String,你可以用它们放入Optional,像


public Optional<Foo> getSomething()

{

     return Optional.ofNullable(service.getFooFromBla().orElse(service.getFooFromBlubb()));

}


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信