Streams Fortgeschritten

Optional-Fallbacks ohne verschachtelte Prüfungen verketten.

✕ 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);
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🔗

Verkettbar

Fallbacks in einer lesbaren Pipeline stapeln.

Lazy-Auswertung

Fallback-Supplier werden nur bei Bedarf ausgeführt.

📖

Deklarativ

Liest sich wie 'versuche primär, oder sekundär, oder Standard'.

Alter Ansatz
Verschachtelter Fallback
Moderner Ansatz
.or()-Kette
Seit JDK
9
Schwierigkeitsgrad
Fortgeschritten
Optional.or() als Fallback
Verfügbar

Weitgehend verfügbar seit JDK 9 (Sept. 2017)

Optional.or() gibt das ursprüngliche Optional zurück, wenn es einen Wert hat, andernfalls wird der Supplier ausgewertet, um ein alternatives Optional zu erhalten. Suppliers sind lazy – sie werden nur bei Bedarf aufgerufen.

Teilen 𝕏 🦋 in