Optional.ifPresentOrElse()
Gérez les deux cas d'Optional, présent et vide, en un seul appel.
Comparaison de Code
✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
greet(user.get());
} else {
handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
this::greet,
this::handleMissing
);
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Expression unique
Les deux cas sont gérés en un seul appel de méthode.
Sans get()
Élimine le dangereux pattern isPresent() + get().
Fluide
S'enchaîne naturellement après findUser() ou toute méthode qui retourne Optional.
Ancienne Approche
if/else sur Optional
Approche Moderne
ifPresentOrElse()
Depuis JDK
9
Difficulté
Débutant
Support JDK
Optional.ifPresentOrElse()
Disponible
Disponible depuis JDK 9 (sept. 2017)
Comment ça fonctionne
ifPresentOrElse() reçoit un Consumer pour le cas présent et un Runnable pour le cas vide. Évite l'anti-pattern isPresent/get.
Documentation Associée