Rumah > Java > javaTutorial > Apakah perbezaan antara kaedah Optional.ifPresentOrElse() dan Optional.or() dalam Java 9?

Apakah perbezaan antara kaedah Optional.ifPresentOrElse() dan Optional.or() dalam Java 9?

PHPz
Lepaskan: 2023-08-26 20:49:02
ke hadapan
706 orang telah melayarinya

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

Dalam versi Java 9, kaedah Optional.ifPresentOrElse() dan Optional.or() telah diperkenalkan untuk meningkatkan fungsinya. Kaedah Optional.ifPresentOrElse() menyemak sama ada nilai ada dan jika ada menggunakan operasi dengan nilai, sebaliknya mengembalikan no-op manakala kaedah Optional.or() menyemak sama ada nilai ada dan jika ada mengembalikan pilihan yang mengandungi nilai, Jika tidak mengembalikan Pilihan yang digunakan pada fungsi Pembekal. Kaedah Optional.ifPresentOrElse() mengandungi dua parameter, Consumer dan Runnable, manakala kaedah Optional.or() mengandungi hanya satu parameter, Pembekal. Sintaks

Optional.ifPresentOrElse(): Terjemahan bahasa Cina bagi

<strong>public void ifPresentOrElse(Consumer<? super T><!--? super T--> action, Runnable emptyAction)</strong>
Salin selepas log masuk

Contoh

ialah:

Contoh

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())
   }
}
Salin selepas log masuk

Output

<strong>1
0
0
1</strong>
Salin selepas log masuk

Contoh

diterjemahkan sebagai :

Contoh🎜
<strong>public Optional<T> or(Supplier<? extends Optional<? extends T<!--? extends Optional<? extends T-->>> supplier)</strong>
Salin selepas log masuk
🎜Output🎜
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());
   }
}
Salin selepas log masuk
🎜

Atas ialah kandungan terperinci Apakah perbezaan antara kaedah Optional.ifPresentOrElse() dan Optional.or() dalam Java 9?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan