Maison > Java > javaDidacticiel > le corps du texte

Quand devez-vous utiliser Optionnel.orElseGet() au lieu de Optionnel.orElse() ?

Linda Hamilton
Libérer: 2024-10-26 22:47:31
original
443 Les gens l'ont consulté

When should you use Optional.orElseGet() instead of Optional.orElse()?

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

La classe Optionnelle fournit des méthodes comme orElse() et orElseGet() pour récupérer la valeur d'un facultatif si elle est présente, ou fournir une valeur par défaut si elle est vide. Cependant, il existe une différence subtile dans leur comportement :

  • orElse(): Appelle toujours la fonction fournie pour obtenir la valeur par défaut, que l'Optionnel contienne une valeur ou pas.
  • orElseGet() : Appelle la fonction fournie uniquement si l'option est vide.

Quand utiliser orElseGet()

La principale différence est que orElseGet() retarde l'exécution de la fonction de récupération de valeur par défaut jusqu'à ce qu'elle soit nécessaire, tandis que orElse() exécute toujours la fonction. Cela peut être important dans les situations où l'obtention de la valeur par défaut est une opération coûteuse ou longue que vous souhaitez effectuer uniquement si nécessaire.

Exemple :

Considérez un scénario dans lequel vous devez rechercher une ressource (représentée par un facultatif) et récupérer sa valeur, ou bien fournir une valeur par défaut. Si l'obtention de la valeur par défaut nécessite une requête de base de données coûteuse, vous souhaiterez utiliser orElseGet() pour éviter la requête lorsque la ressource est présente.

<code class="java">Optional<Resource> resource = findResource();
Resource result = orElseGet(() -> getExpensiveDefaultValue());</code>
Copier après la connexion

Remarques supplémentaires :

  • orElseGet() reçoit une implémentation d'interface fournisseur, qui est une interface fonctionnelle représentant une fonction sans argument.
  • Même si orElseGet() n'appelle pas la fonction fournie lorsque l'facultatif n'est pas vide, il évalue toujours l'expression lambda. Cela signifie que tous les effets secondaires au sein de l'expression se produiront toujours.

Conclusion :

orElseGet() fournit un moyen de différer l'exécution d'une valeur par défaut. fonction de récupération jusqu'à ce que cela soit nécessaire, permettant des optimisations de performances dans les cas où l'obtention de la valeur par défaut est coûteuse ou indésirable lorsque l'optionnel n'est pas vide.

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!