確定Optional.orElse()和Optional.orElseGet()之間的區別
在Java中,Optional類別提供了像orElse ( ) 和orElseGet() 用於處理潛在的缺失值或空值。了解它們的細微差別對於有效使用至關重要。
orElse() 與orElseGet()
何時使用orElseGet()
真實世界函數範例
為了說明差異,請考慮以下函數:
<code class="java">public Optional<String> findMyPhone(int phoneId)</code>
場景1: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中文網其他相關文章!