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

شرح Java

التعدادات (Enums)

الدرس 25 من 42· ⏱ 1 دقائق قراءة

ما هو الـ Enum؟

تعداد (enum) هو نوع بيانات يُعرّف مجموعة قيم محددة سلفًا — بدل كتابة ثوابت عددية أو نصية مبعثرة بالكود.

public enum Day {
  SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
  THURSDAY, FRIDAY, SATURDAY
}

الاستخدام الأساسي

Day today = Day.MONDAY;

if (today == Day.SUNDAY || today == Day.SATURDAY) {
  System.out.println("عطلة!");
} else {
  System.out.println("أيام العمل");
}

مقارنة الـ enum بـ == آمنة تمامًا (على عكس النصوص).

switch مع enum

switch (today) {
  case MONDAY    -> System.out.println("بداية الأسبوع");
  case FRIDAY    -> System.out.println("الحمد لله يوم الجمعة");
  case SUNDAY    -> System.out.println("الراحة");
  default        -> System.out.println("أيام العمل");
}

خصائص ودوال في الـ Enum

كل enum يملك تلقائيًا name() و ordinal():

Day d = Day.FRIDAY;
d.name();      // "FRIDAY"
d.ordinal();   // 4 (يبدأ من 0)

إضافة خصائص ودوال

public enum Season {
  SPRING("ربيع"),
  SUMMER("صيف"),
  AUTUMN("خريف"),
  WINTER("شtail");

  private final String arabicName;

  Season(String arabicName) {
    this.arabicName = arabicName;
  }

  public String getArabicName() {
    return arabicName;
  }
}

Season s = Season.SUMMER;
System.out.println(s.getArabicName()); // صيف

تحويل من نص لـ Enum

Season summer = Season.valueOf("SUMMER");  // الصيغة: الاسم كبير بالإنجليزية

المرور على كل القيم

for (Season s : Season.values()) {
  System.out.println(s.ordinal() + " - " + s.getArabicName());
}

متى نستخدم Enum؟

  • بدائل محددة: أيام الأسبوع، الحالات، الألوان.
  • بدل الثوابت الرقمية: يمنع الأخطاء ويجعل الكود أوضح.
  • مع switch: تنظيف شروط التحقق.

💡 الـ enum في Java صنف كامل — يمكن أن يحتوي حقولًا ودوالًا ويعمل مع الوراثة.

🎯 التالي: الأصناف المتداخلة (Nested Classes).

شرح التعدادات (Enums) — Java بالعربي
التعدادات (Enums)Java بالعربي · The Code Fix

📚 لمزيد من التعمّق في Java، راجِع توثيق Java من Oracle.

هل كان هذا الدرس مفيدًا؟