التعداد هو شكل موحد من المعلمات ، بحيث يمكنك استبدال المفاهيم الغامضة صراحة التي قد تسببها المعلمات من النوع الودي. التعداد يشبه الفصل ومصفوفة دون النظر في عدم التوافق في النوع.
ككلمة رئيسية جديدة تم تقديمها بواسطة Sun ، تبدو ENUM مثل فصل خاص. يمكن أن يكون لها أيضًا متغيراتها الخاصة ، وتحديد أساليبها الخاصة ، وتنفيذ واجهات واحدة أو أكثر. عندما نعلن عن نوع التعداد ، يجب أن نلاحظ أن نوع التعداد لديه بعض الخصائص على النحو التالي.
1. لا يمكن أن يكون لها مُنشئ عام ، والقيام بذلك يمكن أن يضمن أن رمز العميل لا يمكنه إنشاء مثيل جديد من التعداد.
2. جميع قيم التعداد العامة ، ثابتة ، نهائية. لاحظ أن هذا هو فقط لقيم التعداد. يمكننا تحديد أي متغيرات أخرى غير مُرملة من أي نوع تمامًا مثل تحديد المتغيرات في الفئات العادية. يمكن إجراء هذه المتغيرات مع أي معدل تريده.
3. تعداد ينفذ واجهة java.lang.comparable بشكل افتراضي.
4. التعداد يتجاوز طريقة toString ، لذلك إذا استدعينا color.blue.toString () ، فإننا نعيد السلسلة "الأزرق" افتراضيًا.
5. ENUM يوفر طريقة قيمة ، والتي تتوافق مع طريقة tostring. سيعود استدعاء القيمة ("الأزرق") color.blue. لذلك ، يجب أن نولي اهتمامًا لهذا عند إعادة كتابة طريقة tostring بأنفسنا. بمعنى آخر ، يجب أن نعيد كتابة طريقة القيمة وفقًا لذلك.
6. ENUM يوفر أيضًا طريقة القيم ، والتي تتيح لك اجتياز جميع قيم التعداد بسهولة.
7. التعداد لديه أيضًا طريقة oridinal ، والتي تُرجع ترتيب قيم التعداد في فئة التعداد. يعتمد هذا الترتيب على ترتيب إعلان قيمة التعداد. هنا color.red.ordinal () إرجاع 0.
بعد فهم هذه الميزات الأساسية ، دعونا نرى كيفية استخدامها.
1. اجتياز جميع قيم التعداد. مع العلم أن هناك طرقًا للقيم ، يمكننا استخدام حلقة Foreach لاجتياز قيم التعداد بطريقة مألوفة.
لـ (color c: color.values ()) system.out.println ("Find Value:" + C) ؛2. تحديد الطرق والمتغيرات في التعداد. على سبيل المثال ، يمكننا إضافة طريقة إلى اللون لإعادة اللون بشكل عشوائي.
لون التعداد العام {أحمر ، أخضر ، أزرق ؛ رقم int ثابت خاص = color.values (). الطول ؛ GetRandomColor color static public () {long random = system.CurrentTimeMillis () ٪ ؛ التبديل ((int) عشوائي) {case 0: return color.red ؛ الحالة 1: Color.green ؛ الحالة 2: إرجاع color.blue ؛ الافتراضي: إرجاع color.red ؛ }}}يمكن ملاحظة أنه لا يوجد فرق بين تحديد المتغيرات والأساليب في أنواع التعداد وتحديد الأساليب والمتغيرات في الفئات العادية. الشيء الوحيد الذي يجب ملاحظته هو أنه يجب وضع تعريفات المتغير والطريقة بعد كل تعريفات قيمة التعداد ، وإلا فإن المترجم سيعطي خطأ.
3. تجاوز tostring ، طريقة القيمة
نحن نعلم بالفعل أن ENUM يوفر طرقًا مثل ToString و ValueOF وما إلى ذلك. في كثير من الأحيان نحتاج إلى تجاوز طريقة tostring الافتراضية ، فكيف نقوم بالتعداد؟ في الواقع ، هذا لا يختلف عن تجاوز طريقة tostring مع فئة عادية.
... السلسلة العامة toString () {switch (this) {case red: return "color.red" ؛ Case Green: Return "color.green" ؛ Case Blue: Return "color.blue" ؛ الافتراضي: إرجاع "unnow color" ؛ }}….في هذا الوقت ، يمكننا أن نرى أن المطبوعة برمز اجتياز سابق
color.red color.green color.blue
بدلاً من
اللون الأزرق الأخضر الأحمر.
يمكنك أن ترى أن tostring قد تم الكتابة عليه بالفعل. بشكل عام ، عند الكتابة فوق tostring ، يجب علينا أيضًا الكتابة فوق طريقة القيمة للحفاظ على اتساقها.
4. باستخدام البنائين
على الرغم من أن ENUM لا يمكن أن يكون لها مُنشئ عام ، إلا أنه لا يزال بإمكاننا تحديد المنشئ الخاص واستخدامه داخل التعداد. دعنا نستخدم مثال اللون.
لون التعداد العام {red ("this is red") ، Green ("This Is Green") ، Blue ("This is Blue") ؛ سلسلة خاصة DESC ؛ color (string desc) {this.desc =} السلسلة العامة getDesc () {return this.desc ؛ }}نحن هنا نقدم معلومات شرح لكل لون ، ثم نحدد مُنشئًا لقبول معلومات التفسير هذه.
تجدر الإشارة إلى أن المُنشئ لا يمكن أن يكون علنيًا أو محميًا ، وذلك لضمان استخدام المُنشئ داخليًا فقط ، ولا يمكن لرمز العميل جديدًا مثيلًا لقيمة التعداد. هذا أمر معقول تمامًا ، لأننا نعلم أن قيم التعداد هي مجرد ثوابت نهائية ثابتة عامة.
5. تنفيذ واجهات محددة
نحن نعلم بالفعل أن التعداد يمكن أن يحدد المتغيرات والأساليب. يحتاج إلى تنفيذ واجهة وتنفيذ واجهة مثل فئة عادية. لن أقدم مثالاً هنا.
6. تحديد طريقة التعداد الخاصة بك.
لقد رأينا في وقت سابق أنه يمكن تعريف بعض الطرق من أجل التعداد ، ولكن في الواقع يمكننا تحديد طرق لكل قيمة التعداد. وبهذه الطريقة ، يمكن إعادة كتابة مثالنا السابق على تجاوز tostring مثل هذا.
COLLENT التعداد العام {red {public string toString () {return "color.red" ؛ }} ، green {public string toString () {return "color.green" ؛ }} ، Blue {public string toString () {return "color.blue" ؛ }} ؛ }من الناحية المنطقية ، هذا أكثر وضوحًا من طريقة tostring الأصلية التي توفر طريقة "عالمية".
بشكل عام ، تأمل التعداد ، كنوع جديد تمامًا ، في مساعدة المبرمجين على كتابة رموز أبسط وأسهل في الفهم.
لا يحتاج الأشخاص عمومًا إلى استخدام بعض الميزات المتقدمة لـ Enum ، وإلا فإنه سيتعارض مع النية الأصلية البسيطة والسهلة الفهم.
تتحدث المقالة أعلاه لفترة وجيزة عن دور وفوائد تعداد Jave هي كل المحتوى الذي أشاركه معك. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.