Streams Başlangıç

Optional.ifPresentOrElse()

Optional'ın hem mevcut hem de boş durumlarını tek bir çağrıda işleyin.

✕ 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.
📏

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ıç
Optional.ifPresentOrElse()
Mevcut

JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)

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.

Paylaş 𝕏 🦋 in