Fallback com Optional.or()
Encadeie fallbacks de Optional sem verificações aninhadas.
Comparação 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);
Viu um problema com este código? Nos avise.
Por que a forma moderna ganha
Encadeável
Empilhe fallbacks em um pipeline legível.
Avaliação lazy
Os suppliers de fallback só executam quando necessário.
Declarativo
Lê-se como 'tente primário, ou secundário, ou padrão'.
Abordagem Antiga
Fallback aninhado
Abordagem Moderna
Encadeamento com .or()
Desde o JDK
9
Dificuldade
Intermediário
Suporte JDK
Fallback com Optional.or()
Disponível
Amplamente disponível desde o JDK 9 (setembro de 2017)
Como funciona
Optional.or() retorna o Optional original se contiver um valor, caso contrário avalia o supplier para obter um Optional alternativo. Os suppliers são lazy — só são chamados quando necessário.
Documentação Relacionada