Instructions pour l'écriture de traitement lorsque des valeurs existent / n'existent pas dans Java Facultatif

Les trois méthodes suivantes peuvent être utilisées lors de l'écriture du traitement lorsqu'une valeur existe / n'existe pas dans Java Facultatif.

J'ai réfléchi à ma propre directive quant à la méthode à utiliser, dans quel cas.

Spécifications de chaque méthode

Optional.isPresent() ʻOptional.isPresent () est une méthode qui renvoie truesi la valeur existe,false` si ce n'est pas le cas. En l'utilisant en combinaison avec l'instruction if ~ else, la syntaxe conventionnelle de vérification null peut être remplacée presque telle quelle. Cependant, une telle utilisation est également dite ** "remplaçant simplement la vérification nulle, il ne sert à rien d'utiliser facultatif" **.

final Optional<String> foo = Optional.ofNullable("foo");

if (foo.isPresent()) {
	System.out.println("foo=" + foo.orElse(""));
} else {
	System.out.println("foo is null");
}

Optional.ifPresent() ʻOptional.ifPresent () `est une méthode qui exécute la fonction (Consumer) spécifiée par l'argument si la valeur existe. Il existe une restriction selon laquelle le traitement lorsque la valeur n'existe pas ne peut pas être décrit, et ** les variables en dehors du bloc ne peuvent pas être réécrites dans la fonction **.

final Optional<String> foo = Optional.ofNullable("foo");

foo.ifPresent(f -> System.out.println("foo=" + f));

Optional.ifPresentOrElse() ʻOptional.ifPresentOrElse () `exécute la première fonction (Consumer) spécifiée par l'argument si la valeur existe, et exécute la deuxième fonction (Runnable) spécifiée par l'argument si elle n'existe pas. La méthode. Vous pouvez décrire le traitement lorsque la valeur n'existe pas, mais il existe une restriction selon laquelle ** les variables en dehors du bloc ne peuvent pas être réécrites dans la fonction **.

final Optional<String> foo = Optional.ofNullable("foo");

foo.ifPresentOrElse(f -> System.out.println("foo=" + f), () -> System.out.println("foo is null"));

organigramme

Il s'agit d'un organigramme de la méthode à utiliser, auquel cas.

<! - TODO: Recréez l'organigramme avec draw.io-> https://qiita-image-store.s3.amazonaws.com/0/132608/149d5aab-1032-6390-c4b1-01f209874ec4.png

Fondamentalement, il semble bon d'utiliser ʻOptional.ifPresent () `et d'utiliser d'autres méthodes uniquement lorsque vous voulez réécrire des variables en dehors du bloc ou lorsque vous voulez décrire le traitement lorsque la valeur n'existe pas.

Lien de référence

Recommended Posts

Instructions pour l'écriture de traitement lorsque des valeurs existent / n'existent pas dans Java Facultatif
Traitement lorsqu'un ID qui n'existe pas dans la base de données est entré dans l'URL
Lors de la recherche de plusieurs dans un tableau Java
Mettre à jour si le document existe déjà dans le SDK Java Azure Cosmos DB, en créer un s'il n'existe pas
La cause n'est pas visible lors de l'appel de méthodes d'autres classes en java
Traitement d'échappement lors de la création d'une URL dans Ruby
La solution pour NetBeans 8.2 ne fonctionne pas dans l'environnement Java 9
Une note quand vous voulez Tuple en Java
Vous n'avez pas besoin d'écrire deux fois lorsque vous créez un triangle rectangle en Java
Créez "Je ne suis pas un robot" en Java EE (Jakarta EE)
ConcurrentHashMap n'autorise pas null pour la clé et la valeur
Lorsque Docker pour Mac 2.4.0.0 ne reflète pas les modifications de fichier
Remarque sur l'initialisation des champs dans le didacticiel Java
[Java] Lors de l'écriture du source ... Mémorandum ①
Ce que j'ai appris lors de la création d'un serveur en Java
Appeler un programme écrit en Swift depuis Processing (Java)
Lorsqu'un point d'arrêt est défini dans IntelliJ IDEA mais qu'il ne s'arrête pas au débogage [Gradle]
Aux personnes qui ont supprimé un document dans Firestore, mais la sous-collection ne disparaît pas
[Java] Une technique pour écrire des constructeurs, des getters et des setters d'un seul coup avec IntelliJ IDEA.