Maison > Java > javaDidacticiel > 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
Libérer: 2023-08-26 20:49:02
avant
690 Les gens l'ont consulté

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>
Copier après la connexion

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())
   }
}
Copier après la connexion

Output

<strong>1
0
0
1</strong>
Copier après la connexion

Optional.or() La syntaxe :

<strong>public Optional<T> or(Supplier<? extends Optional<? extends T<!--? extends Optional<? extends T-->>> supplier)</strong>
Copier après la connexion

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());
   }
}
Copier après la connexion

Sortie

<strong>Test1
Test2</strong>
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal