我有一個返回 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
提交
取消