如果 Optional 為空,則返回預設值
不要只使用 Optional.get()
, 因為那可能會丟擲 NoSuchElementException
。該 Optional.orElse(T)
和 Optional.orElseGet(Supplier<? extends T>)
方法提供一種方法來提供一個預設值的情況下,可選的是空的。
String value = "something";
return Optional.ofNullable(value).orElse("defaultValue");
// returns "something"
return Optional.ofNullable(value).orElseGet(() -> getDefaultValue());
// returns "something" (never calls the getDefaultValue() method)
String value = null;
return Optional.ofNullable(value).orElse("defaultValue");
// returns "defaultValue"
return Optional.ofNullable(value).orElseGet(() -> getDefaultValue());
// calls getDefaultValue() and returns its results
orElse
和 orElseGet
之間的關鍵區別在於後者僅在 Optional 為空時進行評估,而即使 Optional 不為空,也會評估提供給前者的引數。因此,orElse
應僅用於常量,而不應基於任何型別的計算提供值。