Optional.or() als Fallback
Optional-Fallbacks ohne verschachtelte Prüfungen verketten.
Code-Vergleich
✕ 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.
Warum der moderne Weg gewinnt
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
JDK-Unterstützung
Optional.or() als Fallback
Verfügbar
Weitgehend verfügbar seit JDK 9 (Sept. 2017)
Wie es funktioniert
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.
Zugehörige Dokumentation