Maison > Java > javaDidacticiel > le corps du texte

Quand utiliser `Optional.orElseGet()` plutôt que `Optional.orElse()` ?

Mary-Kate Olsen
Libérer: 2024-10-31 00:32:03
original
168 Les gens l'ont consulté

 When to Use `Optional.orElseGet()` Over `Optional.orElse()`?

Différence entre Optionnel.orElse() et Optionnel.orElseGet()

La classe Optionnelle en Java fournit des méthodes pratiques pour gérer et renvoyer des valeurs qui peuvent ou non être présent. Deux méthodes importantes dans cette classe sont orElse() et orElseGet(). La principale différence entre ces méthodes réside dans le moment où la valeur de secours ou le calcul est invoqué.

orElse()

La méthode orElse() prend une valeur par défaut comme argument et renvoie celle-ci. valeur si l’instance facultative est vide. Il n'attend pas que isPresent() soit évalué, mais évalue et renvoie immédiatement la valeur de secours fournie, même si l'instance facultative n'est pas vide.

orElseGet()

En revanche, le La méthode orElseGet() prend une interface Fournisseur comme argument, vous permettant de définir un calcul qui s'exécute uniquement lorsque l'instance facultative est vide. Cette approche est plus efficace lorsque la valeur de repli est coûteuse à calculer et ne doit être effectuée que lorsque cela est nécessaire.

Quand utiliser orElseGet() plutôt que orElse()

Envisagez d'utiliser orElseGet() au lieu de orElse() dans les scénarios suivants :

  • Optimisation des performances : orElseGet() garantit que le calcul de secours n'est effectué qu'en cas de besoin, améliorant ainsi les performances si le calcul de secours est gourmand en ressources .
  • Gestion des exceptions : Si le calcul de secours peut lever une exception, orElseGet() vous permet de l'encapsuler de manière plus contrôlée, évitant ainsi la levée d'exceptions inattendues.
  • Lisibilité du code : l'utilisation de orElseGet() avec un fournisseur descriptif peut améliorer la lisibilité du code en indiquant quand le calcul de secours est en cours d'exécution.

Exemple d'utilisation

Considérez l'exemple suivant :

<code class="java">Optional<String> optional = Optional.ofNullable("Hello");

// Always computes the fallback value.
String result1 = optional.orElse("World");

// Computes the fallback value only if the optional is empty.
String result2 = optional.orElseGet(() -> {
   // Expensive computation here
   return "World";
});</code>
Copier après la connexion

Dans cet exemple, result1 contiendra toujours "World" car la valeur de secours est évaluée quelle que soit l'option présente. En revanche, result2 ne se verra attribuer "Monde" que si l'option est vide, permettant de meilleures performances lorsque le calcul est coûteux.

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:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!