Heim > Java > javaLernprogramm > 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
Freigeben: 2023-08-26 20:49:02
nach vorne
689 Leute haben es durchsucht

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>
Nach dem Login kopieren

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())
   }
}
Nach dem Login kopieren

Output

<strong>1
0
0
1</strong>
Nach dem Login kopieren

Optional.or() Die Syntax:

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

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());
   }
}
Nach dem Login kopieren

Ausgabe

<strong>Test1
Test2</strong>
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage