gpt4 book ai didi

java - Java8 中使用 orElseGet 与 orElse

转载 作者:行者123 更新时间:2023-11-30 01:59:50 24 4
gpt4 key购买 nike

我有一个返回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());

最佳答案

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

orElseGet() 仅当 OptionalDouble 为空时才会执行您的服务。

关于java - Java8 中使用 orElseGet 与 orElse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53248396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com