如果 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

orElseorElseGet 之間的關鍵區別在於後者僅在 Optional 為空時進行評估,而即使 Optional 不為空,也會評估提供給前者的引數。因此,orElse 應僅用於常量,而不應基於任何型別的計算提供值。