如果 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 应仅用于常量,而不应基于任何类型的计算提供值。