Optional.ifPresentOrElse()
Gestisci entrambi i casi di Optional presente e vuoto in una chiamata.
Confronto Codice
✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
greet(user.get());
} else {
handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
this::greet,
this::handleMissing
);
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Espressione singola
Entrambi i casi gestiti in una singola chiamata a metodo.
Nessun get()
Elimina il pericoloso pattern isPresent() + get().
Fluente
Si concatena naturalmente dopo findUser() o qualsiasi metodo che restituisce Optional.
Approccio Vecchio
if/else su Optional
Approccio Moderno
ifPresentOrElse()
Dal JDK
9
Difficoltà
Principiante
Supporto JDK
Optional.ifPresentOrElse()
Disponibile
Ampiamente disponibile dal JDK 9 (settembre 2017)
Come funziona
ifPresentOrElse() accetta un Consumer per il caso presente e un Runnable per il caso vuoto. Evita l'anti-pattern isPresent/get.
Documentazione Correlata