Optional.or() ile yedekleme
İç içe kontroller olmadan Optional yedeklerini zincirleyin.
Kod Karşılaştırması
✕ 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);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Zincirlenebilir
Okunabilir bir boru hattında yedekler arka arkaya eklenir.
Gecikmeli değerlendirme
Yedek tedarikçiler yalnızca gerekli olduğunda çalışır.
Bildirimsel
'önce birincili dene, yoksa ikincili, yoksa varsayılanı' şeklinde okunur.
Eski Yaklaşım
İç içe yedekleme
Modern Yaklaşım
.or() zinciri
JDK'dan itibaren
9
Zorluk
Orta
JDK Desteği
Optional.or() ile yedekleme
Mevcut
JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
Nasıl çalışır
Optional.or(), orijinal Optional'ın bir değeri varsa onu döndürür; yoksa alternatif bir Optional elde etmek için tedarikçiyi değerlendirir. Tedarikçiler gecikmeli çalışır — yalnızca gerektiğinde çağrılır.
İlgili Belgeler