示例
在正常的 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值为空,则只会调用此方式。