Optional.orElse() と Optional.orElseGet() の違いの確認
Java では、Optional クラスは orElse() のようなメソッドを提供します。 ) および orElseGet() は、欠落している可能性のある値または null 値を処理します。効果的に使用するには、そのニュアンスを理解することが重要です。
orElse() と orElseGet()
orElseGet() を使用する場合
実世界関数の例
違いを説明するために、次の関数を考えてみましょう:
<code class="java">public Optional<String> findMyPhone(int phoneId)</code>
シナリオ 1: orElse()
Optional.isPresent() の場合== true:
optional.isPresent() == false の場合:
シナリオ 2: orElseGet()
の場合Optional.isPresent() == true:
Optional.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>
コードは、オプションの値の有無に基づいて orElse() と orElseGet() の異なる動作を示します。
以上がJava で Optional.orElse() の代わりに Optional.orElseGet() を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。