Streams Iniciante

Trate os casos de presente e vazio do Optional em uma única chamada.

✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
    greet(user.get());
} else {
    handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
    this::greet,
    this::handleMissing
);
Viu um problema com este código? Nos avise.
📏

Expressão única

Ambos os casos tratados em uma única chamada de método.

🚫

Sem get()

Elimina o padrão perigoso de isPresent() + get().

🔗

Fluente

Encadeia naturalmente após findUser() ou qualquer método que retorna Optional.

Abordagem Antiga
if/else com Optional
Abordagem Moderna
ifPresentOrElse()
Desde o JDK
9
Dificuldade
Iniciante
Optional.ifPresentOrElse()
Disponível

Amplamente disponível desde o JDK 9 (setembro de 2017)

ifPresentOrElse() recebe um Consumer para o caso presente e um Runnable para o caso vazio. Evita o antipadrão isPresent/get.

Compartilhar 𝕏 🦋 in