تخطَّ إلى المحتوى

Optional

حاوية Optional Optional

Optional تمنع NullPointerException بدل ما تُرجع null — تُجبرك على التعامل مع الحالة الفارغة صراحة.

Optional كائن حاوية قد يحتوي قيمة أو لا. بدل الإرجاع null (الذي يسبب NullPointerException)، أرجع Optional.empty() أو Optional.of(value). تُجبر المستخدم على التعامل مع الحالة الفارغة using orElse() أو ifPresent() أو map().

الصياغة

Optional.of(value);
Optional.empty();

opt.orElse(default);
opt.orElseThrow(() -> new Ex());
opt.ifPresent(v -> ...);
opt.map(v -> v.toUpperCase());

📄 مثال

import java.util.Optional;

Optional<String> name = Optional.of("سارة");
Optional<String> empty = Optional.empty();

String n1 = name.orElse("مجهول"); // "سارة"
String n2 = empty.orElse("مجهول"); // "مجهول"

empty.ifPresent(n -> System.out.println(n)); // لا يطبع شيء

Optional<Integer> len = name.map(String::length);
System.out.println(len.orElse(0)); // 4

أهم النقاط

العنصرالوظيفة
Optional.of(v)إنشاء Optional بقيمة — null تسبب NullPointerException
Optional.ofNullable(v)يقبل null — يُرجع Optional.empty()
orElse(default)يُرجع القيمة أو القيمة الافتراضية
orElseThrow()يرمي استثناء إذا فارغ
ifPresent(consumer)يُنفّذ فقط إذا كانت القيمة موجودة
map(function)يحوّل القيمة داخل Optional

💡 نصائح عملية

  • لا تستخدم Optional مع المجموعات — استخدم empty collection بدلاً من Optional.empty()
  • Optional.map() + orElse() أنظف بكثير من سلسلة if-else

⚠️ أخطاء شائعة

  • nxing isPresent()随后 get() — أفضل استخدام orElse() أو ifPresent()
  • nxing Optional.of(null) — تسبب NullPointerException مباشرة

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.