Java の Optional クラスは、値を処理して返すための便利なメソッドを提供します。現在。このクラスの 2 つの重要なメソッドは、orElse() と orElseGet() です。これらのメソッドの主な違いは、フォールバック値または計算が呼び出されるタイミングにあります。
orElse() メソッドは、引数としてデフォルト値を受け取り、それを返します。 Optional インスタンスが空の場合の値。 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.orElse()` ではなく `Optional.orElseGet()` を使用する場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。