[JAVA] J'étais curieux de savoir comment utiliser correctement Optional orElse () et orElseGet ().

supposition

Au moment de la rédaction de cet article, j'ai peu de connaissances sur la syntaxe de java.util.Optional.

Facultatif est quoi

Classe ajoutée dans Java8-java.util.Optional

** Un objet conteneur qui peut ou non contenir des valeurs non nulles. ** ** by https://docs.oracle.com/javase/jp/8/docs/api/java/util/Optional.html

Je vois, je ne sais pas.

ressembler

Code d'essai pour le moment

Main.java


import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {

        Optional.of("hoge").orElseGet(() -> {
            System.out.println("Il n'est pas exécuté ou ElseGet");
            return "";
        });

        Optional.empty().orElseGet(() -> {
            System.out.println("C'est orElseGet d'être exécuté");
            return "";
        });

        String piyo = (String)Optional.of("hoge").orElse("Ce n'est pas retourné ou sinon");
        System.out.println("piyo: " + piyo);

        String piyo2 = (String)Optional.empty().orElse("Il est retourné ou sinon");
        System.out.println("piyo2: " + piyo2);

    }
}

résultat

C'est orElseGet d'être exécuté piyo: hoge piyo2: Il est retourné ou sinon

En d'autres termes ...?

orElse () est exécuté indépendamment du fait que le contenu de Optional soit nul, et oeElseGet () est exécuté uniquement lorsqu'il est nul.

Conclusion

--OrElse () est bon car il est inutile d'écrire une expression lambda juste pour renvoyer une constante comme "Si nul, renvoie un caractère vide ou zéro" --OrElseGet () dans le cas de "S'il est nul, effectuez un traitement et renvoyez le résultat"

Recommended Posts

J'étais curieux de savoir comment utiliser correctement Optional orElse () et orElseGet ().
J'ai réfléchi à la manière d'utiliser correctement WillSet de Swift.
À propos de la question pour laquelle j'étais accro à l'utilisation de hashmap
Comment utiliser java Facultatif
J'étais curieux de savoir all_month et j'ai lu ActiveSupport DateAndTime :: Calculations
Comment utiliser EventBus3 et ThreadMode
Comment utiliser l'égalité et l'égalité (comment utiliser l'égalité)
J'étais curieux de savoir comment fonctionne gRPC-Java, alors j'ai essayé la lecture de code
J'ai testé comment utiliser le test / l'unité de Ruby et le code de Janken.
Comment utiliser OrientJS et OrientDB ensemble
Comment configurer et utiliser kapt
Comment utiliser les méthodes substring et substr
[Java] Découvrez comment utiliser correctement Optional
Comment utiliser @Builder et @NoArgsConstructor ensemble
[Java] Comment utiliser la classe FileReader et la classe BufferedReader
[Ruby] Comment utiliser la méthode gsub et la sous-méthode
Réflexion sur la façon d'utiliser Ionic-Native, Hybrid et HTML5 pour la production d'applications mobiles
Comment utiliser le contrôle segmenté et les points à noter
Comment utiliser la portée et le traitement des passes (servist)
[Java] Comment utiliser la classe Calendar et la classe Date
[Java] J'ai étudié le polymorphisme, je vais donc résumer comment l'utiliser et ses mérites.
Comment utiliser Maven que je n'entends plus
[Rails] Je ne sais pas comment utiliser le modèle ...
Comment utiliser et appliquer la classe JFrame / Canvas de Java
Comment utiliser Map
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser la carte
Comment utiliser collection_select
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment utiliser TreeSet
[Comment utiliser l'étiquette]
Comment utiliser l'identité
Comment utiliser le hachage
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
Comment utiliser OpenCV 4 sur Android et afficher la vue en direct de la caméra
J'ai essayé de faire coexister Java Optional et la clause de garde
Comment utiliser l'icône Font Awesome pour ul et li
Comment appeler et utiliser l'API en Java (Spring Boot)
Réfléchissez à la façon de diviser MVC en M et V
Procédures pour transmettre RealmObject à Fragment et comment utiliser Parceler
Une histoire de malentendu sur l'utilisation du scanner Java (mémo)
Comment utiliser l'API Chain
[Java] Comment utiliser Map
Comment utiliser Queue avec priorité
[Rails] Comment utiliser enum