String value = optional.orElse("default");
Quelles sont les méthodes facultatives couramment utilisées en Java ?
Préface
Facultatif en Java est un objet conteneur, qui peut contenir une valeur non nulle ou être vide. Son objectif principal est d'éviter les exceptions de pointeur nul lors de l'écriture de code.
L'utilisation complète de Facultatif dans Java 8 est la suivante :
1 Créez un objet facultatif
Vous pouvez créer un objet contenant des non-. valeurs nulles via la méthode of() Objet facultatif, par exemple :
Optional<String> optional = Optional.of("value");
Vous pouvez également créer un objet facultatif contenant une valeur éventuellement nulle via la méthode ofNullable(), par exemple : #🎜🎜 #
Optional<String> optional = Optional.ofNullable(null);
String value = optional.get();
if (optional.isPresent()) { // Optional对象包含非空值 } else { // Optional对象为空 }
optional.ifPresent(value -> System.out.println(value));
4. la valeur ou la valeur par défaut dans l'objet facultatif
#🎜 🎜#Vous pouvez utiliser la méthode orElse() pour obtenir la valeur ou la valeur par défaut dans l'objet facultatif, par exemple :String value = optional.orElse("default");
Copier après la connexion
If la valeur dans l'objet facultatif est vide, la valeur par défaut spécifiée est renvoyée. 5. Obtenez la valeur dans l'objet facultatif ou lancez une exception Vous pouvez utiliser la méthode orElseThrow() pour obtenir la valeur dans l'objet facultatif ou lancer une exception, par exemple : #🎜🎜 #String value = optional.orElse("default");
String value = optional.orElseThrow(() -> new RuntimeException("value is null"));
Si la valeur de l'objet facultatif est vide, l'exception spécifiée est levée.
6. Convertissez la valeur de l'objet facultatif
Vous pouvez utiliser la méthode map() pour convertir la valeur de l'objet facultatif en un autre type de valeur, par exemple :
Optional<Integer> optional = Optional.of("123").map(Integer::parseInt);
Si la valeur de l'objet facultatif est vide, un objet facultatif vide est renvoyé.
7. Filtrez la valeur dans l'objet facultatif
Vous pouvez utiliser la méthode filter() pour filtrer la valeur dans l'objet facultatif, par exemple :
Optional<String> optional = Optional.of("value").filter(value -> value.startsWith("v"));
If Facultatif Si la valeur de l'objet ne répond pas aux conditions de filtrage spécifiées, un objet Facultatif vide est renvoyé.
Améliorations de Java 9
Nous avons introduit les fonctionnalités de Java 8. Java 9 ajoute trois méthodes à la classe facultative : or(), ifPresentOrElse() et stream().
La méthode or() est similaire à orElse() et orElseGet(), qui fournissent toutes deux des situations alternatives lorsque l'objet est vide. La valeur de retour de or() est un autre objet facultatif produit par le paramètre Fournisseur.
Si l'objet contient une valeur, l'expression Lambda ne sera pas exécutée :
@Test public void whenEmptyOptional_thenGetValueFromOr() { User result = Optional.ofNullable(user) .or( () -> Optional.of(new User("default","1234"))).get(); assertEquals(result.getEmail(), "default"); }
Dans l'exemple ci-dessus, si la variable utilisateur est nulle, elle renverra un facultatif, qui contient un objet utilisateur dont l'e-mail est "par défaut". La méthode
ifPresentOrElse() nécessite deux paramètres : un Consumer et un Runnable. Si l'objet contient une valeur, l'action du Consommateur sera exécutée, sinon le Runnable sera exécuté.
Si vous souhaitez effectuer une action lorsqu'il y a une valeur, ou simplement savoir si une certaine valeur est définie, alors cette méthode est très utile :
Optional.ofNullable(user).ifPresentOrElse( u -> logger.info("User is:" + u.getEmail()), () -> logger.info("User not found"));
Supplément : facultatif controverse Cliquez sur
En fait, il y a encore beaucoup de controverses dans l'industrie sur la question de savoir si Optionnel doit être utilisé. D'une part, Optionnel peut forcer les développeurs à gérer des valeurs nulles, mais d'autre part. , Facultatif est très facile à abuser, en particulier Certains développeurs appellent directement la méthode get() ou ifPresent() après avoir obtenu le Facultatif, ce qui ne résout pratiquement aucun problème et augmente la charge de codage.
Par conséquent, ma suggestion est que si vous ne savez pas si vous devez utiliser Facultatif, ne l'utilisez pas encore.
Voici quelques scénarios de référence pour l'utilisation de Facultatif, comme suit :
Facultatif est généralement utilisé pour renvoyer des valeurs
Facultatif est principalement utilisé pour renvoyer une valeur, son utilisation n'est pas recommandée dans les variables membres ou les paramètres de méthode.
N'attribuez jamais null à Facultatif et ne jugez pas si Facultatif lui-même est nul En effet, Facultatif est conçu pour résoudre. null Oui, cela n’aurait aucun sens d’introduire à nouveau null. Cela devrait devenir le consensus de l’industrie.
Optional lui-même ne juge pas nul
Étant donné que les collections ont de meilleures méthodes de traitement telles que Collections.emptyList(), il n'est pas nécessaire d'utiliser Facultatif.
Les collections n'utilisent pas Facultatif
Comme vous pouvez le voir dans l'introduction à l'utilisation ci-dessus, Facultatif fournit de nombreuses méthodes de traitement fonctionnel lambda, telles que le filtre, la carte, etc. , ceux-ci sont plus recommandés lors de l'utilisation de Facultatif, car Facultatif peut vous aider à gérer automatiquement les situations de valeurs nulles et à éviter les exceptions NPE.
Traitement fonctionnel des valeurs
J'ai déjà mentionné cet exemple de code Je pense que c'est le scénario dans lequel les avantages de l'utilisation d'Optional sont les plus évidents.
Acquisition d'attributs multicouches
Retourner Facultatif à l'appelant forcera l'appelant à gérer la situation nulle, ce qui ajoutera une certaine charge de codage à l'appelant, fonctionne particulièrement avec une grande réutilisabilité.
Ne pas renvoyer null est mieux que de renvoyer Facultatif Mais si l'appelant ne s'attend pas à obtenir null dans la plupart des cas, il doit implémenter une méthode qui renvoie une valeur ou une exception, comme suit : - # 🎜 🎜#Étant donné que le code de traitement ultérieur repose sur les données de commande, les données de commande ne peuvent pas être obtenues et le code ne peut pas descendre. Par conséquent, dans la plupart des cas, il est préférable d'utiliser la méthode getOrderByIdOrExcept, qui évite le NPE et augmente la charge de codage. !
/** * 查询订单,要么返回订单,要么异常 */ public Order getOrderByIdOrExcept(Long orderId){ Order order = orderMapper.getOrderById(orderId); if(order == null){ throw new BizException("根据单号" + orderId + "未查询到订单!"); } return order; } /** * 查询订单,值可能为null */ public Optional<Order> getOrderById(Long orderId){ Order order = orderMapper.getOrderById(orderId); return Optional.ofNullable(order); }
Copier après la connexionCe 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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
