Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java 8 Optional meistern: Praktischer Leitfaden für null-sicheren Code

Optional ist ein Container-Objekt, das nicht-null-Objekte aufnehmen kann. Ein Optional-Objekt dient dazu, null durch einen fehlenden Wert darzustellen. Diese Klasse bietet diverse Hilfsmethoden, um Werte als „vorhanden“ oder „nicht vorhanden“ zu behandeln, anstatt explizit auf null zu prüfen. Sie wurde in Java 8 eingeführt und ähnelt dem Optional aus Guava.

Klassendeklaration

Nachfolgend die Deklaration der Klasse java.util.Optional<T>:

public final class Optional<T> extends Object

Klassenmethoden

Nr. Methode & Beschreibung
1

static <T> Optional<T> empty()

Gibt eine leere Optional-Instanz zurück.

2

boolean equals(Object obj)

Prüft, ob ein anderes Objekt „gleich“ diesem Optional ist.

3

Optional<T> filter(Predicate<? super T> predicate)

Wenn ein Wert vorhanden ist und das Prädikat erfüllt, wird ein Optional mit diesem Wert zurückgegeben; andernfalls ein leeres Optional.

4

<U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper)

Wendet die gegebene, ein Optional liefernde Mapping-Funktion an, falls ein Wert vorhanden ist; andernfalls leeres Optional.

5

T get()

Liefert den Wert, falls vorhanden; sonst wirft NoSuchElementException.

6

int hashCode()

Gibt den Hash-Code des vorhandenen Werts zurück, oder 0, wenn kein Wert vorhanden ist.

7

void ifPresent(Consumer<? super T> consumer)

Führt den Consumer mit dem Wert aus, falls vorhanden; andernfalls nichts.

8

boolean isPresent()

Gibt true zurück, wenn ein Wert vorhanden ist, sonst false.

9

<U> Optional<U> map(Function<? super T, ? extends U> mapper)

Wendet die Mapping-Funktion an, falls ein Wert vorhanden ist, und gibt ein Optional des Ergebnisses zurück (sofern nicht null).

10

static <T> Optional<T> of(T value)

Gibt ein Optional mit dem angegebenen nicht-null-Wert zurück.

11

static <T> Optional<T> ofNullable(T value)

Gibt ein Optional zurück, das den Wert beschreibt, falls nicht-null; andernfalls leeres Optional.

12

T orElse(T other)

Liefert den Wert, falls vorhanden; andernfalls den Standardwert other.

13

T orElseGet(Supplier<? extends T> other)

Liefert den Wert, falls vorhanden; andernfalls ruft den Supplier auf und gibt dessen Ergebnis zurück.

14

<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

Liefert den enthaltenen Wert, falls vorhanden; andernfalls wirft eine Exception, die vom Supplier erzeugt wird.

15

String toString()

Gibt eine nicht-leere String-Repräsentation für Debugging-Zwecke zurück.

Diese Klasse erbt Methoden von:

Optional-Beispiel

Erstellen Sie das folgende Java-Programm in einem Editor Ihrer Wahl, z. B. unter C:\JAVA.

Java8Tester.java

Live Demo
import java.util.Optional;

public class Java8Tester {
    public static void main(String args[]) {
        Java8Tester java8Tester = new Java8Tester();
        Integer value1 = null;
        Integer value2 = new Integer(10);

        // Optional.ofNullable erlaubt null als Parameter
        Optional<Integer> a = Optional.ofNullable(value1);
        // Optional.of wirft NullPointerException bei null
        Optional<Integer> b = Optional.of(value2);

        System.out.println(java8Tester.sum(a, b));
    }

    public Integer sum(Optional<Integer> a, Optional<Integer> b) {
        // isPresent prüft, ob ein Wert vorhanden ist
        System.out.println("Erster Parameter vorhanden: " + a.isPresent());
        System.out.println("Zweiter Parameter vorhanden: " + b.isPresent());

        // orElse liefert Wert oder Default
        Integer value1 = a.orElse(new Integer(0));
        // get liefert den Wert (muss vorhanden sein)
        Integer value2 = b.get();

        return value1 + value2;
    }
}

Ergebnis prüfen

Kompilieren mit javac:

C:\JAVA>javac Java8Tester.java

Ausführen:

C:\JAVA>java Java8Tester

Erwartete Ausgabe:

Erster Parameter vorhanden: false
Zweiter Parameter vorhanden: true
10

Java

  1. Javas final-Schlüsselwort verstehen: Variablen, Methoden und Klassen
  2. Java instanceof-Operator: Ein umfassender Leitfaden
  3. Java statische verschachtelte Klassen verstehen: Nutzung, Unterschiede und Beispiele
  4. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  5. Java Singleton-Pattern erklärt: Sichere Implementierung und Verwendung
  6. Java Reflection meistern: Klassen, Methoden und Felder zur Laufzeit inspizieren
  7. Java ObjectOutputStream meistern: Serialisierung, Methoden und praktische Beispiele
  8. Java Generics meistern – Wiederverwendbaren, typsicheren Code erstellen
  9. Java-Dateioperationen mit java.io meistern – Erstellen, Lesen, Schreiben & Löschen
  10. Java 9 Optional Erweiterungen: stream(), ifPresentOrElse() & or()