Streams مبتدئ

تعامل مع الحالة الموجودة والفارغة لـ Optional في استدعاء واحد.

✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
    greet(user.get());
} else {
    handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
    this::greet,
    this::handleMissing
);
هل ترى مشكلة في هذا الكود؟ أخبرنا.
📏

تعبير واحد

كلا الحالتين تُعالَجان في استدعاء دالة واحد.

🚫

لا get()

يُزيل النمط الخطر isPresent() + get().

🔗

سائل

يتسلسل بشكل طبيعي بعد findUser() أو أي دالة تُرجع Optional.

الأسلوب القديم
if/else على Optional
الأسلوب الحديث
ifPresentOrElse()
منذ JDK
9
الصعوبة
مبتدئ
Optional.ifPresentOrElse()
متاح

متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)

تأخذ ifPresentOrElse() Consumer للحالة الموجودة و Runnable للحالة الفارغة. تتجنّب النمط المضاد isPresent/get.

مشاركة 𝕏 🦋 in