Optional.orElse() と Optional.orElseGet() の違い
Optional クラスには、orElse() や orElseGet() などのメソッドが用意されています。 Optional が存在する場合はそれから値を取得し、空の場合はデフォルト値を提供します。ただし、それらの動作には微妙な違いがあります。
orElseGet() を使用する場合
主な違いは、orElseGet() はデフォルト値取得関数の実行を必要になるまで遅らせるのに対し、orElse() は関数を常に実行することです。これは、デフォルト値の取得が高価または時間のかかる操作であり、必要な場合にのみ実行したい場合に重要です。
例:
リソース (オプションで表される) を見つけてその値を取得するか、デフォルト値を指定する必要があるシナリオ。デフォルト値の取得にコストのかかるデータベース クエリが必要な場合は、リソースが存在するときに orElseGet() を使用してクエリを回避することをお勧めします。
<code class="java">Optional<Resource> resource = findResource(); Resource result = orElseGet(() -> getExpensiveDefaultValue());</code>
追加メモ:
結論:
orElseGet() は、デフォルト値の実行を延期する方法を提供します。必要になるまで取得関数を使用し、オプションが空でないときにデフォルト値の取得にコストがかかる場合や望ましくない場合にパフォーマンスの最適化を可能にします。
以上がOptional.orElse() の代わりに Optional.orElseGet() を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。