确定Optional.orElse()和Optional.orElseGet()之间的区别
在Java中,Optional类提供了像orElse( ) 和 orElseGet() 用于处理潜在的缺失值或空值。了解它们的细微差别对于有效使用至关重要。
orElse() 与 orElseGet()
何时使用 orElseGet()
真实世界函数示例
为了说明差异,请考虑以下函数:
<code class="java">public Optional<String> findMyPhone(int phoneId)</code>
场景 1:orElse()
当可选.isPresent() 时== true:
当 optional.isPresent() == false 时:
场景 2:orElseGet()
当option.isPresent() == true:
当 option.isPresent() == false 时:
代码示例
<code class="java">public class TestOptional { public Optional<String> findMyPhone(int phoneId) { return phoneId == 10 ? Optional.of("MyCheapPhone") : Optional.empty(); } public String buyNewExpensivePhone() { System.out.println("Going to a very far store to buy a new expensive phone"); return "NewExpensivePhone"; } public static void main(String[] args) { // Scenario 1: orElse() Optional<String> phone = findMyPhone(10).orElse(buyNewExpensivePhone()); // Scenario 2: orElseGet() phone = findMyPhone(-1).orElseGet(() -> buyNewExpensivePhone()); } }</code>
The代码演示了 orElse() 和 orElseGet() 根据可选值是否存在的不同行为。
以上是在 Java 中什么时候应该使用Optional.orElseGet()而不是Optional.orElse()?的详细内容。更多信息请关注PHP中文网其他相关文章!