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

Java 9 Optional Erweiterungen: stream(), ifPresentOrElse() & or()

Drei neue Methoden für java.util.Optional<T>

Java 8 führte Optional ein, um null explizit zu modellieren. Java 9 schließt drei Lücken.

1. stream() – Optional → Stream

public Stream<T> stream()

Beispiel: Liste von Optionals filtern

List<Optional<String>> opts = List.of(
    Optional.empty(), Optional.of("A"), Optional.empty(), Optional.of("B")
);

// Java 8: umständlich
List<String> java8 = opts.stream()
    .filter(Optional::isPresent)
    .map(Optional::get)
    .collect(Collectors.toList());

// Java 9: elegant
List<String> java9 = opts.stream()
    .flatMap(Optional::stream)
    .collect(Collectors.toList());

// Beide: [A, B]

2. ifPresentOrElse(Consumer, Runnable)

public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)

Beispiel

Optional<Integer> opt = Optional.of(42);
opt.ifPresentOrElse(
    v -> System.out.println("Wert: " + v),
    () -> System.out.println("Nicht vorhanden")
); // Ausgabe: Wert: 42

opt = Optional.empty();
opt.ifPresentOrElse(
    v -> System.out.println("Wert: " + v),
    () -> System.out.println("Nicht vorhanden")
); // Ausgabe: Nicht vorhanden

3. or(Supplier<Optional>) – Fallback-Optional

public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)

Beispiel

Supplier<Optional<String>> fallback = () -> Optional.of("Default");

Optional<String> opt1 = Optional.of("Echt");
opt1 = opt1.or(fallback);
opt1.ifPresent(System.out::println); // Echt

Optional<String> opt2 = Optional.empty();
opt2 = opt2.or(fallback);
opt2.ifPresent(System.out::println); // Default

Zusammenfassung

Methode Rückgabe Use Case
stream() Stream<T> Optional in Stream-Pipeline einbinden (flatMap)
ifPresentOrElse(c, r) void Beidseitige Behandlung (Wert / Leer) als Statement
or(supplier) Optional<T> Fallback-Optional ketten, weitere Optional-Ops möglich

Fazit

Diese Methoden machen Optional zu einem First-Class-Citizen in Stream-Pipelines und reduzieren imperativen Kontrollfluss. Besonders flatMap(Optional::stream) ist ein häufiges Pattern in modernem Java-Code.

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 Stream API Erweiterungen: takeWhile, dropWhile, iterate & ofNullable