Streams Średniozaawansowany

Łącz warianty zapasowe Optional bez zagnieżdżonych sprawdzeń.

✕ 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ć.
🔗

Ł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
Optional.or() — wariant zapasowy
Dostępne

Szeroko dostępne od JDK 9 (wrzesień 2017)

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.