انتقل إلى المحتوى
أمين أبوزيد
BEG-037

Optional

  • 4 درس
  • 46 دقيقة قراءة
  • 1.5 ساعة تدريب (تقدير)
في هذه الصفحة 8 موضوعات

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

نظرة عامة

الموضوعات

  • إنشاء Optional
  • التحويلات
  • الاستخدام المناسب

تعلّم أولًا

46 دقيقة قراءة · 1.5 ساعة تدريب (تقدير)

مخرجات التعلم

  1. Return Optional from a method that may not find a result.
  2. Transform and unwrap with map, filter, orElse, orElseGet, orElseThrow.
  3. State where Optional should not be used (fields, parameters, collections).

الدروس

  1. 01خطأ المليار دولار: null12 د قراءة
  2. 02استخدام Optional بشكل جيد11 د قراءة
  3. 03أنماط مضادة (anti-patterns) في Optional12 د قراءة
  4. 04عرض عملي: جعل findById تُرجع Optional11 د قراءة

المختبر والتمارين

Lab

BEG-037-LAB1 · Safe lookups

Outcomes: 1–3 · Time: ~1 h Change findById in the generic repository (BEG-031) to return Optional and update all callers. Acceptance: no .get() without a check.

Exercises (assessment: three exercises)

IDOutcomeTask
BEG-037-EX011Write Optional<String> firstLongWord(List<String> words, int min) that returns the first word with at least min letters.
BEG-037-EX022Given Optional<String> name, print it upper-cased or "guest", and write a second version that throws IllegalStateException("name missing").
BEG-037-EX033Fix these: a class with an Optional<String> field, a method with an Optional<Integer> parameter, a method returning Optional<List<Order>>.
أظهر الحلول
  • EX01 for (String w : words) if (w.length() >= min) return Optional.of(w); return Optional.empty(); (or a stream with filter(...).findFirst()).
  • EX02 name.map(String::toUpperCase).orElse("guest"); name.orElseThrow(() -> new IllegalStateException("name missing")).
  • EX03 Make the field a plain String (possibly null, documented) or keep it as a normal value; take a plain Integer/int or use overloads; return List<Order> and an empty list when nothing is found.
  • Outcome 1 is also covered by the lab and quiz Q01–Q03.

الاختبار

Outcomes: O1 returning Optional · O2 transforming and unwrapping · O3 where not to use it.

اختبار ذاتي لك: لا توجد درجات، ولا يُحفظ أو يُرسل أي شيء. اختر إجابة ثم تحقق منها، ويمكنك المحاولة مرة أخرى كما تشاء.

  1. 1Optional<T> is best used as:O1
  2. 2Which creates an empty Optional?O1
  3. 3Optional.of(null) will:O1
  4. 4opt.orElse("x") returns:O2
  5. 5Which computes its default only when needed?O2
  6. 6To throw your own exception when empty:O2
  7. 7opt.map(String::length) returns:O2
  8. 8Calling get() on an empty Optional:O3
  9. 9A method that finds no orders should return:O3
  10. 10Which is an anti-pattern?O3

الجزء العملي

Three exercises BEG-037-EX01 to EX03 plus the lab. Pass: all three exercises correct and the lab has no unchecked .get().

أخطاء شائعة

optional.get() unconditionally; Optional fields.

التقييم

3 exercises.

الصلة بالمسار الوظيفي

Spring Data return types (JNR-029).

اكتب للبحث في المستويات والمراحل والوحدات والدروس.