Streams Początkujący

Obsłuż oba przypadki — obecny i pusty — Optional w jednym wywołaniu.

✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
    greet(user.get());
} else {
    handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
    this::greet,
    this::handleMissing
);
Widzisz problem z tym kodem? Daj nam znać.
📏

Jedno wyrażenie

Oba przypadki obsłużone w jednym wywołaniu metody.

🚫

Bez get()

Eliminuje niebezpieczny wzorzec isPresent() + get().

🔗

Płynny

Łączy się naturalnie po findUser() lub dowolnej metodzie zwracającej Optional.

Stare podejście
if/else na Optional
Nowoczesne podejście
ifPresentOrElse()
Od JDK
9
Poziom trudności
Początkujący
Optional.ifPresentOrElse()
Dostępne

Szeroko dostępne od JDK 9 (wrzesień 2017)

ifPresentOrElse() przyjmuje Consumer dla przypadku obecnego i Runnable dla przypadku pustego. Unika antywzorca isPresent/get.