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

在 Java8 中使用 orElseGet 与 orElse

在 Java8 中使用 orElseGet 与 orElse

料青山看我应如是 2022-01-12 15:56:06
我有一个返回 OptionalDouble 的服务,如果它为 null,我会从另一个服务返回一个值,但我不知道它在性能或最佳实践方面是否更好 orElseGet 或 orElse..选项1)fixerService.getRate(addWalletAmount.getMenuSymbol())                                     .orElseGet(() -> menuService                                                     .findBySymbol(addWalletAmount                                                             .getMenuSymbol())                                                                .getPrice()                                                             .doubleValue());选项2) fixerService.getRate(addWalletAmount.getMenuSymbol())                                     .orElse(menuService                                                     .findBySymbol(addWalletAmount                                                             .getMenuSymbol())                                                                .getPrice()                                                             .doubleValue());
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

当然orElseGet()更可取。orElse()即使OptionalDouble不为空,也会执行您的服务,这很浪费(因为menuService.findBySymbol(addWalletAmount.getMenuSymbol()).getPrice().doubleValue()是传递给orElse()方法的参数,并且必须在orElse()执行之前对其进行评估)。

orElseGet()如果OptionalDouble为空,只会执行您的服务。


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 686 浏览

添加回答

举报

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