使用供應商延遲提供預設值
在正常 orElse 方法採用 Object,所以你可能會問,為什麼有一個選項,在這裡提供一個 Supplier(該 orElseGet 方法)。
考慮:
String value = "something";
return Optional.ofNullable(value)
               .orElse(getValueThatIsHardToCalculate()); // returns "something"
它仍會呼叫 getValueThatIsHardToCalculate(),即使它的結果未被使用,因為可選項不為空。
為避免此罰款,你需要供應商:
String value = "something";
return Optional.ofNullable(value)
               .orElseGet(() -> getValueThatIsHardToCalculate()); // returns "something"
這樣,只有當 Optional 為空時才會呼叫 getValueThatIsHardToCalculate()。