ホームページ > Java > &#&チュートリアル > Java 9 の Optional.ifPresentOrElse() メソッドと Optional.or() メソッドの違いは何ですか?

Java 9 の Optional.ifPresentOrElse() メソッドと Optional.or() メソッドの違いは何ですか?

PHPz
リリース: 2023-08-26 20:49:02
転載
706 人が閲覧しました

Java 9中Optional.ifPresentOrElse()和Optional.or()方法之间的区别是什么?

Java 9 バージョンでは、機能を向上させるために Optional.ifPresentOrElse() メソッドと Optional.or() メソッドが導入されました。 Optional.ifPresentOrElse()メソッドは値が存在するかどうかを確認し、存在する場合はその値を使用して操作を適用し、それ以外の場合は操作なしを返しますが、Optional.or() メソッドは値が存在するかどうかを確認し、存在する場合は値を含むオプションを返し、存在しない場合はサプライヤー関数に適用されるオプションを返します。 Optional.ifPresentOrElse() メソッドには ConsumerRunnable という 2 つのパラメータが含まれていますが、Optional.or() メソッドには 1 つのパラメータしか含まれていませんパラメータ、サプライヤー

Optional.ifPresentOrElse() の構文:

<strong>public void ifPresentOrElse(Consumer<? super T><!--? super T--> action, Runnable emptyAction)</strong>
ログイン後にコピー

Example

の中国語訳は次のとおりです:

Example

import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;

public class IfPresentOrElseMethodTest {
   public static void main(String args[]) {
      optionalIsPresent();
      optionalIsEmpty();
   }
   private static void optionalIsPresent() {
      <strong>Optional<String></strong> optional = <strong>Optional.of</strong>("Test");
      AtomicInteger successCounter = new AtomicInteger();
      AtomicInteger emptyOptionalsCounter = new AtomicInteger();

      optional.<strong>ifPresentOrElse</strong>(x -> successCounter.incrementAndGet(), () ->       emptyOptionalsCounter.incrementAndGet());

      System.out.println(successCounter.get());
      System.out.println(emptyOptionalsCounter.get());
   }
   private static void optionalIsEmpty() {
      Optional optional = <strong>Optional.empty()</strong>;
      AtomicInteger successCounter = new AtomicInteger();
      AtomicInteger emptyOptionalsCounter = new AtomicInteger();

      optional.<strong>ifPresentOrElse</strong>(x -> successCounter.incrementAndGet(), () -> emptyOptionalsCounter.incrementAndGet());

      System.out.println(successCounter.get());
      System.out.println(emptyOptionalsCounter.get())
   }
}
ログイン後にコピー

Output

<strong>1
0
0
1</strong>
ログイン後にコピー

Optional.or() の構文:

<strong>public Optional<T> or(Supplier<? extends Optional<? extends T<!--? extends Optional<? extends T-->>> supplier)</strong>
ログイン後にコピー

Example

の中国語訳は次のとおりです:

Example

import java.util.Optional;

public class OptionalOrMethodTest {
   public static void main(String args[]) {
      optionalIsPresent();
      optionalIsEmpty();
   }
   private static void optionalIsPresent() {
      <strong>Optional<String></strong> optional1 = <strong>Optional.of</strong>("Test1");
      <strong>Optional<String></strong> optional2 = <strong>Optional.of</strong>("Test2");

      <strong>Optional<String</strong><strong>></strong> optional3 = <strong>optional1.or</strong>(() -> optional2);
      System.out.println(optional3.get());
   }
   private static void optionalIsEmpty() {
      <strong>Optional<String></strong> optional1 = <strong>Optional.empty()</strong>;
      <strong>Optional<String></strong> optional2 = <strong>Optional.of</strong>("Test2");

      <strong>Optional<String></strong> optional3 = <strong>optional1.or</strong>(() -> optional2);
      System.out.println(optional3.get());
   }
}
ログイン後にコピー

出力

<strong>Test1
Test2</strong>
ログイン後にコピー

以上がJava 9 の Optional.ifPresentOrElse() メソッドと Optional.or() メソッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート