1. نظرة عامة
ال تعداد النوع ، الذي تم تقديمه في Java 5 ، هو نوع بيانات خاص يمثل مجموعة من الثوابت.
باستخدام التعدادات ، يمكننا تحديد واستخدام ثوابتنا في طريقة أمان النوع. يجلب فحص وقت الترجمة إلى الثوابت.
علاوة على ذلك ، يسمح لنا باستخدام الثوابت في حالة التبديل بيان.
في هذا البرنامج التعليمي ، سنناقش تمديد التعدادات في Java ، على سبيل المثال ، إضافة قيم ثابتة جديدة ووظائف جديدة.
2. Enums والميراث
عندما نريد توسيع فئة Java ، فسننشئ عادةً فئة فرعية. في Java ، تعد التعدادات عبارة عن فئات أيضًا.
في هذا القسم ، دعنا نرى ما إذا كان بإمكاننا وراثة التعداد كما نفعل مع فئات Java العادية.
كيفية تركيب السينتوس من USB
2.1. تمديد نوع التعداد
بادئ ذي بدء ، دعنا نلقي نظرة على مثال حتى نتمكن من فهم المشكلة بسرعة:
public enum BasicStringOperation { TRIM('Removing leading and trailing spaces.'), TO_UPPER('Changing all characters into upper case.'), REVERSE('Reversing the given string.'); private String description; // constructor and getter }
كما يظهر الرمز أعلاه ، لدينا تعداد BasicStringOperation الذي يحتوي على ثلاث عمليات سلسلة أساسية.
الآن ، لنفترض أننا نريد إضافة بعض الامتدادات إلى التعداد ، مثل MD5_ENCODE و BASE64_ENCODE . قد نتوصل إلى هذا الحل المباشر:
public enum ExtendedStringOperation extends BasicStringOperation { MD5_ENCODE('Encoding the given string using the MD5 algorithm.'), BASE64_ENCODE('Encoding the given string using the BASE64 algorithm.'); private String description; // constructor and getter }
ومع ذلك ، عندما نحاول تجميع الفئة ، سنرى خطأ المترجم:
Cannot inherit from enum BasicStringOperation
2.2. لا يجوز الميراث للتعدادات
الآن ، دعنا نتعرف على سبب حصولنا على خطأ المترجم.
عندما نقوم بتجميع التعداد ، يقوم مترجم Java ببعض السحر له:
- إنه يحول التعداد إلى فئة فرعية من فئة مجردة java.lang.Enum
- يقوم بتجميع التعداد كملف أخير صف دراسي
على سبيل المثال ، إذا فككنا المترجم BasicStringOperation تعداد باستخدام جافاب ، فسنرى أنه يتم تمثيله كفئة فرعية من java.lang.Enum :
$ javap BasicStringOperation public final class com.baeldung.enums.extendenum.BasicStringOperation extends java.lang.Enum { public static final com.baeldung.enums.extendenum.BasicStringOperation TRIM; public static final com.baeldung.enums.extendenum.BasicStringOperation TO_UPPER; public static final com.baeldung.enums.extendenum.BasicStringOperation REVERSE; ... }
كما نعلم ، لا يمكننا أن نرث أ أخير فئة في جافا. علاوة على ذلك ، حتى لو تمكنا من إنشاء ملف ExtendedStringOperation تعداد لترث BasicStringOperation ، لنا ExtendedStringOperation سوف يمتد التعداد إلى فئتين: BasicStringOperation و java.lang.Enum. وهذا يعني أنه سيصبح حالة وراثة متعددة ، وهي غير مدعومة في Java.
# جافا # برمجة # مطور
www.baeldung.com
توسيع Enums في Java
تعرف على كيفية توسيع Enums في Java. نوع التعداد ، الذي تم تقديمه في Java 5 ، هو نوع بيانات خاص يمثل مجموعة من الثوابت. باستخدام التعدادات ، يمكننا تحديد واستخدام ثوابتنا في طريقة أمان النوع. يجلب فحص وقت الترجمة إلى الثوابت.