首頁 > Java > java教程 > Java 9中Optional.ifPresentOrElse()和Optional.or()方法之間的差異是什麼?

Java 9中Optional.ifPresentOrElse()和Optional.or()方法之間的差異是什麼?

PHPz
發布: 2023-08-26 20:49:02
轉載
690 人瀏覽過

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

在Java 9版本中,引入了Optional.ifPresentOrElse()Optional.or()方法來改進其功能。 Optional.ifPresentOrElse()方法檢查值是否存在,如果存在則應用具有值的操作,否則返回空操作,而Optional.or()方法檢查值是否存在,如果存在則傳回包含值的選項,否則傳回應用於Supplier函數的Optional。 Optional.ifPresentOrElse()方法包含兩個參數,ConsumerRunnable,而Optional.or()方法只包含一個參數,Supplier

Optional.ifPresentOrElse()的語法:

<strong>public void ifPresentOrElse(Consumer<? super T><!--? super T--> action, Runnable emptyAction)</strong>
登入後複製

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())
   }
}
登入後複製

輸出

<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

的中文翻譯為:

範例

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中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板