باعتبارنا أحد مطوري Java ذوي الخبرة ومتذوقي الموضة، غالبًا ما يتم تكليفنا بإنشاء حلول فريدة للمشكلات المعقدة. إحدى هذه المعضلات هي الاختيار العشوائي من التعداد (Enum) في Java. ربما تكون قد خمنت بالفعل أنه لا توجد طريقة مدمجة في Java توفر هذه الوظيفة مباشرة - وهي ميزة شائعة في لغات مثل Python. وعلى الرغم من ذلك، توفر لنا Java الأدوات اللازمة لتطوير الحل الخاص بنا.
التعدادات، الأبطال المجهولون للعديد من البرامج، هي في الأساس نوع يتكون مجاله من مجموعة ثابتة من الثوابت. غالبًا ما نرغب في تحديد قيمة عشوائية من هذه المجموعة. الهدف من هذه المقالة هو توضيح هذه العملية.
توليد التعداد العشوائي في جافا
public static <T extends Enum<?>> T randomEnum(Class<T> clazz){ Random random = new Random(); int x = random.nextInt(clazz.getEnumConstants().length); return clazz.getEnumConstants()[x]; }
دعونا نحلل طريقة "randomEnum" هذه. أولاً، قمنا بتعريف هذه الطريقة لتكون مكتوبة بشكل عام – وهذا يعني أنها يمكن أن تقبل التعدادات من أي نوع. "عشوائي" هو فئة تولد دفقًا من الأرقام العشوائية الزائفة، والتي نستخدمها هنا لتحديد فهرس عشوائي للاختيار. هذا الفهرس 'x' هو int، الحد الأقصى لقيمته محدود بحجم التعداد الخاص بنا، أو بشكل أكثر دقة، طول مصفوفة ثوابت التعداد الخاصة بـ 'clazz' (كائن الفئة) الذي تم تمريره.
بعد إنشاء "x"، نعيد ثابت التعداد العشوائي باستخدام فهرسة المصفوفة باستخدام "x" الذي تم إنشاؤه عشوائيًا. جمال هذه الطريقة هو مرونتها – فهي تعمل مع أي تعداد!
فهم التعدادات في جافا
التعداد في Java هو نوع بيانات يحتوي على مجموعة ثابتة من الثوابت. تكون مُنشئات التعداد دائمًا خاصة أو افتراضية، وعادةً ما تستخدم Enums عندما يكون لديك قيم تعرف أنها لن تتغير، مثل أيام الأسبوع، والاتجاهات (الشمال، الجنوب، الشرق، الغرب)، وما إلى ذلك.
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
أنواع التعداد أقوى بكثير مما نعتقد. في Java، يعد نوع التعداد متغيرًا قويًا لنوع البيانات التقليدي الذي يسمح لنا بتعريف نوع الإرجاع لطريقة معينة، كمعلمة لتلك الطريقة أو حتى ككائن فئة.
الاستخدام والمرونة لطريقة جافا لدينا
تُعد طريقة "randomEnum" بمثابة أداة مساعدة مفيدة لأي مشروع Java. تكمن قوتها في مرونتها – يمكننا استدعاء هذه الطريقة مع أي نوع من أنواع التعداد وسوف تقوم بإرجاع ثابت لهذا التعداد بشكل عشوائي.
من الجدير بالذكر أن العشوائية الناتجة عن الكمبيوتر هي موضوع رائع في حد ذاته، حيث يتضمن خوارزميات معقدة للغاية وهو محوري في عمليات المحاكاة وفي توليد مجموعات البيانات المعقدة. تُعد طريقة "randomEnum" الخاصة بنا مثالًا صغيرًا ولكنه قوي لكيفية استفادة Java من العشوائية الزائفة في صندوق أدوات البرمجة الواسع الخاص بها.
من حيث الموضة، فكر في طريقة "randomEnum" الخاصة بنا باعتبارها الفستان الأسود الصغير لخزانة ملابس Java الخاصة بك. تمامًا كما يخدم الفستان الأسود الصغير أغراضًا متعددة ويمكن ارتداؤه بشكل أنيق أو منخفض حسب المناسبة، فإن طريقة "randomEnum" الخاصة بنا قابلة للتكيف، وتتلاءم بسلاسة مع أي مشروع Java حيث تحتاج إلى إنشاء تعدادات عشوائية، بغض النظر عن الموقف أو نوع التعداد .