亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 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 關注
  • 738 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號