Streams Einsteiger

Beide Fälle eines Optional – vorhanden und leer – in einem einzigen Aufruf behandeln.

✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
    greet(user.get());
} else {
    handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
    this::greet,
    this::handleMissing
);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
📏

Einzelner Ausdruck

Beide Fälle werden in einem Methodenaufruf behandelt.

🚫

Kein get()

Eliminiert das gefährliche isPresent() + get()-Muster.

🔗

Fließend

Kettet sich natürlich nach findUser() oder jeder Optional-zurückgebenden Methode.

Alter Ansatz
if/else auf Optional
Moderner Ansatz
ifPresentOrElse()
Seit JDK
9
Schwierigkeitsgrad
Einsteiger
Optional.ifPresentOrElse()
Verfügbar

Weitgehend verfügbar seit JDK 9 (Sept. 2017)

ifPresentOrElse() nimmt einen Consumer für den vorhandenen Fall und ein Runnable für den leeren Fall. Es vermeidet das isPresent/get-Antimuster.

Teilen 𝕏 🦋 in