تمديد Enums في Java

جرب أداة القضاء على المشاكل

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 ، هو نوع بيانات خاص يمثل مجموعة من الثوابت. باستخدام التعدادات ، يمكننا تحديد واستخدام ثوابتنا في طريقة أمان النوع. يجلب فحص وقت الترجمة إلى الثوابت.

أنظر أيضا: