Maison  >  Article  >  Java  >  Quelle est la différence entre les méthodes Optionnel.ifPresentOrElse() et Optionnel.or() dans Java 9 ?

Quelle est la différence entre les méthodes Optionnel.ifPresentOrElse() et Optionnel.or() dans Java 9 ?

PHPz
PHPzavant
2023-08-26 20:49:02671parcourir

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

Dans la version Java 9, les méthodes Optional.ifPresentOrElse() et Optional.or() ont été introduites pour améliorer leur fonctionnalité. La méthode Optional.ifPresentOrElse() vérifie si la valeur est présente et si elle est présente, applique l'opération avec la valeur, sinon renvoie un no-op tandis que la méthode Optional.or() vérifie si la valeur est présente et si elle est présente. renvoie l'option contenant la valeur, sinon renvoie l'optionnel appliqué à la fonction Fournisseur. La méthode Optional.ifPresentOrElse() contient deux paramètres, Consumer et Runnable, tandis que la méthode Optional.or() ne contient qu'un seul paramètre, Supplier. La syntaxe de

Optional.ifPresentOrElse() : La traduction chinoise de

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

Example

est :

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() La syntaxe :

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

Ex ample

traduit par :

Exemple

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

Sortie

<strong>Test1
Test2</strong>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer