Optional.or() — wariant zapasowy
Łącz warianty zapasowe Optional bez zagnieżdżonych sprawdzeń.
Porównanie kodu
✕ 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);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Łańcuchowalność
Układaj warianty zapasowe w czytelnym potoku.
Leniwa ewaluacja
Dostawcy zapasowi uruchamiają się tylko gdy potrzebne.
Deklaratywny
Czyta się jako 'spróbuj primary, lub secondary, lub defaults'.
Stare podejście
Zagnieżdżone warianty zapasowe
Nowoczesne podejście
Łańcuch .or()
Od JDK
9
Poziom trudności
Średniozaawansowany
Wsparcie JDK
Optional.or() — wariant zapasowy
Dostępne
Szeroko dostępne od JDK 9 (wrzesień 2017)
Jak to działa
Optional.or() zwraca oryginalny Optional jeśli ma wartość, w przeciwnym razie wywołuje dostawcę, aby uzyskać alternatywny Optional. Dostawcy są leniwi — wywoływani tylko gdy potrzebni.
Powiązana dokumentacja
Dowód