🧭 فهم الـ Enums في جافا: تنظيم البيانات بطريقة احترافية
في البرمجة، نواجه كثيراً مواقف نحتاج فيها إلى تعريف مجموعة من القيم الثابتة والمحدودة. الـ Enum (اختصار لكلمة Enumeration) في جافا هو نوع بيانات خاص يسمح لنا بتمثيل مثل هذه المجموعات بطريقة منظمة وآمنة.
📋 ما هي الـ Enums ولماذا نستخدمها؟
تخيل أنك تبرمج تطبيقاً يحتاج إلى أيام الأسبوع، أو فصول السنة، أو حالات طلب معينة (مثل: قيد المعالجة، مُرسل، مُسلم). بدلاً من استخدام أرقام أو نصوص عشوائية قد تحتوي على أخطاء، نستخدم الـ Enum لإنشاء قائمة محددة ومضمونة من القيم.
مميزات استخدام الـ Enum:
- ✅ السلامة: يمنع إدخال قيم غير صحيحة
- ✅ الوضوح: يجعل الكود أكثر قابلية للقراءة
- ✅ التنظيم: يجمّع القيم المتعلقة ببعضها في مكان واحد
🛠️ كيفية تعريف Enum أساسي
لتعريف Enum، نستخدم الكلمة المفتاحية enum بدلاً من class، ونذكر القيم الممكنة بداخلها مفصولة بفواصل:
public enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
هنا أنشأنا نوعاً جديداً اسمه Day يمكن أن يأخذ أي قيمة من القيم السبع المحددة.
🔄 كيفية استخدام Enum في البرنامج
يمكننا宣告 متغير من نوع الـ Enum وتعيين قيمة له من القائمة المحددة:
public class Main {
public static void main(String[] args) {
Day today = Day.FRIDAY;
System.out.println("Today is: " + today);
}
}
مخرج الكود سيكون: Today is: FRIDAY
⚡ استخدام Enum مع جملة switch
الـ Enums تعمل بشكل رائع مع جملة switch لاتخاذ قرارات بناءً على القيمة:
public class Main {
public static void main(String[] args) {
Day today = Day.SATURDAY;
switch(today) {
case SATURDAY:
case SUNDAY:
System.out.println("It's the weekend! 🎉");
break;
default:
System.out.println("It's a weekday.");
}
}
}
📌 Enum كبديل للثوابت (Constants)
قبل الـ Enums، كان المبرمجون يستخدمون ثوابت رقمية أو نصية، والتي كانت عرضة للأخطاء. Enum هو الحل الأفضل:
الطريقة القديمة (غير آمنة):
int day = 7; // ماذا يمثل الرقم 7؟ قد يكون خطأ!
الطريقة الحديثة (آمنة):
Day day = Day.SUNDAY; // واضح وخالٍ من الأخطاء
💡 مثال تطبيقي: حالات الطلب
لنطبق ما تعلمناه على مثال عملي:
public enum OrderStatus {
PENDING,
PROCESSING,
SHIPPED,
DELIVERED,
CANCELLED
}
public class Main {
public static void main(String[] args) {
OrderStatus myOrder = OrderStatus.PROCESSING;
if (myOrder == OrderStatus.PROCESSING) {
System.out.println("Your order is being prepared 📦");
}
}
}
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال