[JAVA] Ich war neugierig, wie man Optional orElse () und orElseGet () richtig verwendet.

Annahme

Zum Zeitpunkt des Schreibens dieses Artikels habe ich wenig Kenntnisse über die Syntax von java.util.Optional.

Optional ist was

Klasse in Java8-java.util.Optional hinzugefügt

** Ein Containerobjekt, das Werte ungleich Null enthalten kann oder nicht. ** ** ** by https://docs.oracle.com/javase/jp/8/docs/api/java/util/Optional.html

Ich verstehe, ich weiß es nicht.

aussehen wie

Testcode vorerst

Main.java


import java.util.*;

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

        Optional.of("hoge").orElseGet(() -> {
            System.out.println("Es ist nicht ausgeführt oder ElseGet");
            return "";
        });

        Optional.empty().orElseGet(() -> {
            System.out.println("Es ist orElseGet, das ausgeführt werden soll");
            return "";
        });

        String piyo = (String)Optional.of("hoge").orElse("Es ist nicht zurückgegeben oder sonst");
        System.out.println("piyo: " + piyo);

        String piyo2 = (String)Optional.empty().orElse("Es ist zurückgekehrt oder sonst");
        System.out.println("piyo2: " + piyo2);

    }
}

Ergebnis

Es ist orElseGet, das ausgeführt werden soll piyo: hoge piyo2: Es ist zurückgekehrt oder sonst

Mit anderen Worten ...?

orElse () wird ausgeführt, unabhängig davon, ob der Inhalt von Optional null ist, und oeElseGet () wird nur ausgeführt, wenn null.

Fazit

--OrElse () ist gut, weil es sinnlos ist, einen Lambda-Ausdruck zu schreiben, um eine Konstante wie "Wenn null, ein leeres Zeichen oder null zurückgeben" zurückzugeben. --OrElseGet () im Fall von "Wenn es null ist, führen Sie eine Verarbeitung durch und geben Sie das Ergebnis zurück"

Recommended Posts

Ich war neugierig, wie man Optional orElse () und orElseGet () richtig verwendet.
Ich dachte darüber nach, wie ich Swifts willSet richtig einsetzen sollte.
Über die Sache, dass ich süchtig danach war, wie man Hashmap benutzt
Verwendung von Java Optional
Ich war neugierig auf all_month und las ActiveSupport DateAndTime :: Calculations
Verwendung von EventBus3 und ThreadMode
Wie man Gleichheit und Gleichheit benutzt (wie man Gleichheit benutzt)
Ich war neugierig, wie gRPC-Java funktioniert, also habe ich versucht, Code zu lesen
Ich habe getestet, wie man Rubys Test / Gerät und Janken's Code verwendet.
Verwendung von OrientJS und OrientDB zusammen
So richten Sie kapt ein und verwenden es
Verwendung von Teilzeichenfolgen und Substratmethoden
[Java] Erfahren Sie, wie Sie Optional richtig verwenden
Verwendung von @Builder und @NoArgsConstructor zusammen
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
[Ruby] Verwendung der gsub-Methode und der sub-Methode
Überlegen Sie, wie Sie Ionic-Native, Hybrid und HTML5 für die Produktion mobiler Apps verwenden können
Verwendung von Segmented Control und zu notierenden Punkten
Verwendung der Scope- und Pass-Verarbeitung (Servist)
[Java] Verwendung der Kalenderklasse und der Datumsklasse
[Java] Ich habe Polymorphismus studiert, daher werde ich zusammenfassen, wie man ihn verwendet und welche Vorzüge er hat.
Wie man Maven benutzt, das ich nicht mehr hören kann
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
Verwendung und Anwendung der JFrame / Canvas-Klasse von Java
Verwendung von Map
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
[Verwendung des Etiketts]
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
So verwenden Sie OpenCV 4 unter Android und zeigen die Kamera live an
Ich habe versucht, Java Optional und Guard-Klausel koexistieren zu lassen
So verwenden Sie das Font Awesome-Symbol für ul und li
Aufrufen und Verwenden der API in Java (Spring Boot)
Überlegen Sie, wie Sie MVC in M und V unterteilen können
Verfahren zum Übergeben von RealmObject an Fragment und zur Verwendung von Parceler
Eine Geschichte über Missverständnisse im Umgang mit Java-Scannern (Memo)
Verwendung der Ketten-API
[Java] Verwendung von Map
Verwendung der Warteschlange mit Priorität
[Rails] Verwendung von Enum