Optional.or() como alternativa
Encadena alternativas de Optional sin verificaciones anidadas.
Comparación de Código
✕ Java 8
Optional<Config> cfg = primary();
if (!cfg.isPresent()) {
cfg = secondary();
}
if (!cfg.isPresent()) {
cfg = defaults();
}
✓ Java 9+
Optional<Config> cfg = primary()
.or(this::secondary)
.or(this::defaults);
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Encadenable
Apila alternativas en un pipeline legible.
Evaluación perezosa
Los suppliers alternativos solo se ejecutan si es necesario.
Declarativo
Se lee como 'intenta primario, o secundario, o valores por defecto'.
Enfoque Antiguo
Alternativa anidada
Enfoque Moderno
Cadena .or()
Desde JDK
9
Dificultad
Intermedio
Soporte JDK
Optional.or() como alternativa
Disponible
Ampliamente disponible desde JDK 9 (sept. 2017)
Cómo funciona
Optional.or() devuelve el Optional original si tiene valor, de lo contrario evalúa el supplier para obtener un Optional alternativo. Los suppliers son perezosos — solo se invocan cuando es necesario.
Documentación Relacionada