Java 使用 Supplier 提供一个默认值

示例

正常的 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"

getValueThatIsHardToCalculate()如果的Optional值为空,则只会调用此方式。