Richtlinien für die Schreibverarbeitung, wenn Werte in Java vorhanden sind / nicht vorhanden Optional

Die folgenden drei Methoden können beim Schreiben der Verarbeitung verwendet werden, wenn in Java Optional ein Wert vorhanden ist / nicht vorhanden ist.

Ich dachte über meine eigene Richtlinie nach, welche Methode in welchem Fall angewendet werden sollte.

Spezifikationen jeder Methode

Optional.isPresent() "Optional.isPresent ()" ist eine Methode, die "true" zurückgibt, wenn der Wert vorhanden ist, "false", wenn dies nicht der Fall ist. In Kombination mit der if ~ else-Anweisung kann die herkömmliche Nullprüfungssyntax fast unverändert ersetzt werden. Eine solche Verwendung wird jedoch auch als ** "nur Ersetzen der Nullprüfung, es macht keinen Sinn, Optional zu verwenden" ** bezeichnet.

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 () ist eine Methode, die die durch das Argument angegebene Funktion (Consumer) ausführt, wenn der Wert vorhanden ist. Es gibt eine Einschränkung, dass die Verarbeitung, wenn der Wert nicht vorhanden ist, nicht beschrieben werden kann und ** Variablen außerhalb des Blocks in der Funktion ** nicht neu geschrieben werden können.

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

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

Optional.ifPresentOrElse() Optional.ifPresentOrElse () führt die erste vom Argument angegebene Funktion (Consumer) aus, wenn der Wert vorhanden ist, und führt die zweite vom Argument angegebene Funktion (Runnable) aus, wenn sie nicht vorhanden ist. Die Methode. Sie können die Verarbeitung beschreiben, wenn der Wert nicht vorhanden ist, es gibt jedoch eine Einschränkung, dass ** Variablen außerhalb des Blocks in der Funktion ** nicht neu geschrieben werden können.

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

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

Flussdiagramm

Es ist ein Flussdiagramm, welche Methode in welchem Fall verwendet werden sollte.

<! - TODO: Erstellen Sie das Flussdiagramm mit draw.io-> neu https://qiita-image-store.s3.amazonaws.com/0/132608/149d5aab-1032-6390-c4b1-01f209874ec4.png

Grundsätzlich scheint es sinnvoll zu sein, "Optional.ifPresent ()" zu verwenden und andere Methoden nur zu verwenden, wenn Sie Variablen außerhalb des Blocks neu schreiben möchten oder wenn Sie die Verarbeitung beschreiben möchten, wenn der Wert nicht vorhanden ist.

Referenzlink

Recommended Posts

Richtlinien für die Schreibverarbeitung, wenn Werte in Java vorhanden sind / nicht vorhanden Optional
Verarbeitung, wenn eine ID, die nicht in der Datenbank vorhanden ist, in die URL eingegeben wird
Bei der Suche nach mehreren in einem Java-Array
Aktualisieren Sie, wenn das Dokument bereits im Azure Cosmos DB Java SDK vorhanden ist, und erstellen Sie ein neues Dokument, wenn es nicht vorhanden ist
Ursache ist nicht sichtbar, wenn Methoden anderer Klassen in Java aufgerufen werden
Escape-Verarbeitung beim Erstellen einer URL in Ruby
Lösung für NetBeans 8.2 funktioniert nicht in Java 9-Umgebung
Ein Hinweis, wenn Sie Tupel in Java möchten
Sie müssen nicht zweimal schreiben, wenn Sie in Java ein rechtwinkliges Dreieck erstellen
Machen Sie "Ich bin kein Roboter" in Java EE (Jakarta EE)
ConcurrentHashMap erlaubt keine Null für Schlüssel und Wert
Wenn Docker für Mac 2.4.0.0 keine Dateiänderungen widerspiegelt
Ein Hinweis zum Initialisieren von Feldern im Java-Lernprogramm
[Java] Beim Schreiben der Quelle ... Memorandum ①
Was ich beim Erstellen eines Servers in Java gelernt habe
Rufen Sie ein in Swift geschriebenes Programm von Processing (Java) auf.
Wenn in IntelliJ IDEA ein Haltepunkt festgelegt ist, der jedoch beim Debuggen von [Gradle] nicht beendet wird
Für Personen, die ein Dokument im Firestore gelöscht haben, aber die Untersammlung nicht verschwindet
[Java] Eine Technik zum Schreiben von Konstruktoren, Gettern und Setzern auf einmal mit IntelliJ IDEA.