Optional.ifPresentOrElse()
Maneja ambos casos de Optional, presente y vacío, en una sola llamada.
Comparación de Código
✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
greet(user.get());
} else {
handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
this::greet,
this::handleMissing
);
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Expresión única
Ambos casos se manejan en una sola llamada al método.
Sin get()
Elimina el peligroso patrón isPresent() + get().
Fluido
Se encadena naturalmente después de findUser() o cualquier método que devuelva Optional.
Enfoque Antiguo
if/else sobre Optional
Enfoque Moderno
ifPresentOrElse()
Desde JDK
9
Dificultad
Principiante
Soporte JDK
Optional.ifPresentOrElse()
Disponible
Ampliamente disponible desde JDK 9 (sept. 2017)
Cómo funciona
ifPresentOrElse() recibe un Consumer para el caso presente y un Runnable para el caso vacío. Evita el antipatrón isPresent/get.
Documentación Relacionada