Java中的Optional类提供了方便的方法来处理和返回可能或可能不是的值展示。此类中的两个重要方法是 orElse() 和 orElseGet()。这些方法之间的主要区别在于调用后备值或计算的时间。
orElse() 方法采用默认值作为参数并返回该值如果可选实例为空,则返回值。它不会等待 isPresent() 被求值,而是立即求值并返回提供的后备值,即使Optional实例不为空也是如此。
相反, orElseGet() 方法将Supplier 接口作为参数,允许您定义仅在Optional 实例为空时运行的计算。当后备值的计算成本较高且仅应在必要时执行时,此方法会更有效。
考虑使用 orElseGet() 而不是orElse() 在以下场景中:
考虑以下示例:
<code class="java">Optional<String> optional = Optional.ofNullable("Hello"); // Always computes the fallback value. String result1 = optional.orElse("World"); // Computes the fallback value only if the optional is empty. String result2 = optional.orElseGet(() -> { // Expensive computation here return "World"; });</code>
在此示例中,result1 将始终包含“World”,因为无论是否存在选项,都会评估后备值。另一方面,如果可选项为空,则 result2 仅会被分配“World”,从而在计算成本较高时获得更好的性能。
以上是何时使用“Optional.orElseGet()”而不是“Optional.orElse()”?的详细内容。更多信息请关注PHP中文网其他相关文章!