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 الكامل بالعربي.