Rumah  >  Artikel  >  Java  >  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
PHPzke hadapan
2023-08-26 20:49:02645semak imbas

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>

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())
   }
}

Output

<strong>1
0
0
1</strong>

Contoh

diterjemahkan sebagai :Contoh🎜
<strong>public Optional<T> or(Supplier<? extends Optional<? extends T<!--? extends Optional<? extends T-->>> supplier)</strong>
🎜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());
   }
}
🎜

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam