Optional.ifPresentOrElse()
Optional'ın hem mevcut hem de boş durumlarını tek bir çağrıda işleyin.
Kod Karşılaştırması
✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
greet(user.get());
} else {
handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
this::greet,
this::handleMissing
);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Tek ifade
Her iki durum tek bir metot çağrısında işlenir.
get() yok
Tehlikeli isPresent() + get() desenini ortadan kaldırır.
Akıcı
findUser() veya Optional döndüren herhangi bir metodun ardından doğal olarak zincirlenir.
Eski Yaklaşım
Optional üzerinde if/else
Modern Yaklaşım
ifPresentOrElse()
JDK'dan itibaren
9
Zorluk
Başlangıç
JDK Desteği
Optional.ifPresentOrElse()
Mevcut
JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
Nasıl çalışır
ifPresentOrElse(), mevcut durum için bir Consumer ve boş durum için bir Runnable alır. isPresent/get anti-deseninden kaçınılmasını sağlar.
İlgili Belgeler