我有一个返回 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
为空,只会执行您的服务。
添加回答
举报
0/150
提交
取消