عند تحديد نوع التعداد ، يمكنك تحديد فئة بشكل أساسي ، ولكن يتم ملء العديد من التفاصيل بواسطة المترجم لك ، لذلك إلى حد ما ، يكون دور الكلمة الرئيسية ENUM مثل الفئة أو الواجهة.
عندما تحدد نوع التعداد باستخدام "enum" ، يتم موروثة الأنواع التي تحددها بشكل أساسي من فئة java.lang.enum ، وعضو كل تعداد هو في الواقع مثيل لنوع التعداد الذي تحدده. لقد تم تخلفهم جميعًا إلى النهائي ، لذلك لا يمكنك تغييرها ، فهي أيضًا أعضاء ثابتون ، بحيث يمكنك استخدامها مباشرة من خلال اسم النوع ، وبالطبع ، الأهم من ذلك ، كلهم عامًا.
على سبيل المثال:
opconstants.javapublic enum opconstants {turn_left ، turn_right ، اطلاق النار} في هذا المثال ، يرث Opconstants من java.lang.enum. كل عضو تعداد مثل turn_left ، turn_right ، تبادل لاطلاق النار. كلها مثيلات كائنات من opconstants ، أي مثيلات الكائن. هناك بطبيعة الحال بعض الطرق أعلاه. على سبيل المثال ، تتم كتابة طريقة TOSTRING () ، والتي تسمح لك بالحصول مباشرة على وصف السلسلة لقيمة التعداد. تتيح لك طريقة القيم () المحددة بواسطة كائن ENUM الحصول على جميع مثيلات التعداد وتمريرها مرة أخرى في صفيف. يمكنك استخدام هاتين الطريقتين لعرض محتوى opconstants ببساطة:
showenum.javapublic class showenum {public static void main (string [] args) {for (opConstants statter: opconstants.values ()) {system.out.println (constant.toString ()) ؛ }}} في الأساس ، ستقوم Println () بالاتصال تلقائيًا ToString () ، لذلك لا بأس من عدم كتابة tostring (). نتيجة التنفيذ على النحو التالي:
turn_leftturn_rightshoot
يمكنك استخدام طريقة "==" أو متساوية () لمقارنة كائنات التعداد. "" == "" سوف تقارن ما إذا كانت كائنات التعداد التي تقدمها هي نفسها (أي ، احتلال موقع الذاكرة نفسه) ، في حين أن متساوي () سوف تقارن بشكل أساسي محتويات كائنين التعداد. بشكل افتراضي ، سيتم مقارنته بناءً على قيمة سلسلة التعداد.
تتيح لك طريقة ValueOF () محاولة تحويل السلسلة المحددة إلى مثيل ENUM. يمكنك استخدام طريقة المقارنة () ، والتي يمكنها مقارنة ترتيب كائدي التعداد عند التعداد. هنا مثال
showenum.javapublic class showenum {public static void main (string [] args) {enumCompareto (opconstants.valueof (args [0])) ؛ ) لـ (opconstants c: opconstants.values ()) {system.out.println (constant.compareto (c)) ؛ }}} نتائج التنفيذ:
$ Java Showenum Turn_Right
Turn_Right10-1
قم بتمرير قيمة إيجابية ، مما يشير إلى أن الترتيب هو قبل مقارنة كائن التعداد ، بعد الإشارة إلى القيمة السالبة ، و 0 يعني أن مواضع قيمتي التعداد المتبادل بينهما هي نفسها.
لكل عضو تعداد ، يمكننا استخدام طريقة Ordinal () للحصول على فهرس الموضع في أمر التعداد ، ويبدأ الافتراضي بـ 0 ، على سبيل المثال:
showenum.javapublic class showenum {public static void main (string [] args) {for (opConstants c: opconstants.values ()) {system.out.printf ("٪ d ٪ s n" ، c.ordinal () ، c) ؛ }}} نتائج التنفيذ:
0 turn_left1 turn_right2 تبادل لاطلاق النار
يمكن استخدام الكلمة الرئيسية ENUM لتحديد فئة التعداد ، ويمكن كتابة الثوابت ذات الصلة في فصل. دعونا نلقي نظرة على مثال أدناه.
الرمز التالي:
class testClass {private testClass () {} // تحديد مُنشئ خاص ، ولا يمكن أن تقوم بتثبيت كائن من الخارج // توفير مثالين A و B static Final TestClass A = جديد testClass () ؛ TestClass النهائي الثابت العام B = New TestClass () ؛}يمكنك استخدام أنواع التعداد بدلاً من ذلك:
enum testClass01 {a ، b ؛}الاستخدام:
يمكن أن تحتوي التعداد أيضًا على مُنشئين وحقول وطرق:
ENUM TESTCLASS02 {a ("a") // عند إنشاء كائن ، تمرير في معلمات المنشئ ، b ("b") ؛ قيمة السلسلة الخاصة ؛ private testClass02 (قيمة السلسلة) {this.value = value ؛ } السلسلة العامة getValue () {return this.value ؛ }}يمكن أن يكون للاتصالات أساليب مجردة:
ENUM TESTCLASS03 {a () {// تنفيذ method method method public void type () {system.out.println ("assected") ؛ }} ، b () {public void type () {system.out.println ("good") ؛ }} ؛ نوع الفراغ التجريدي العام () ؛ // تحديد طريقة الملخص}طريقة الاختبار:
الفئة العامة test02 {public static void main (string [] args) {print (testClass02.a) ؛ // appe in enum parameters} print public static static void (testClass02 t) {system.out.println (t.getValue ()) ؛ } enum testClass02 {a ("a") ، b ("b") ؛ قيمة السلسلة الخاصة ؛ private testClass02 (قيمة السلسلة) {this.value = value ؛ } السلسلة العامة getValue () {return this.value ؛ }}}نتائج التشغيل:
Aauthor: ابدأ علامة: طالما أنك ما زلت تحاول ، فهذا ليس فشلًا.