Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen den Methoden Optional.ifPresentOrElse() und Optional.or() in Java 9?

Was ist der Unterschied zwischen den Methoden Optional.ifPresentOrElse() und Optional.or() in Java 9?

PHPz
PHPznach vorne
2023-08-26 20:49:02643Durchsuche

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

In der Java 9-Version wurden die Methoden Optional.ifPresentOrElse() und Optional.or() eingeführt, um ihre Funktionalität zu verbessern. Die Methode Optional.ifPresentOrElse() prüft, ob der Wert vorhanden ist und wendet, falls vorhanden, die Operation mit dem Wert an. Andernfalls wird ein No-Op zurückgegeben, während die Methode Optional.or() prüft, ob der Wert vorhanden ist und falls vorhanden Gibt die Option zurück, die den Wert enthält, andernfalls wird das auf die Lieferantenfunktion angewendete Optional zurückgegeben. Die Methode Optional.ifPresentOrElse() enthält zwei Parameter, Consumer und Runnable, während die Methode Optional.or() nur einen Parameter enthält, Supplier. Die Syntax von

Optional.ifPresentOrElse(): Die chinesische Übersetzung von

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

Example

ist:

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() Die Syntax:

<strong>public Optional<T> or(Supplier<? extends Optional<? extends T<!--? extends Optional<? extends T-->>> supplier)</strong>

Beispiel

übersetzt als :

Beispiel

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

Ausgabe

<strong>Test1
Test2</strong>

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den Methoden Optional.ifPresentOrElse() und Optional.or() in Java 9?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen