مثال على تعدادات جافا: ValueOf, toString, Switch, compareTo
النوع تعدادسبان> في جافا هو نوع بيانات خاص يسمح لك بالإعلان عن متغيرات ثابتة. في Java ، الكلمة الأساسية للإعلان لنوع تم تعداده هي enum.مثال على enum
نريد الإعلان عن متغير تعداد بخمسة محركات بحث:
public enum searchengines{Google, Yahoo, Bing, Exhead, Baidu};
< / pre>الفاصلة في النهاية اختيارية ، كلتا الكتابتين قانونيتان.
يمكنك الوصول إلى الثوابت:enginesمحرك البحث = محركات البحث.جوجل;
< / pre>جميع التعدادات ترث من class < / span >< span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >java.lang.Enum لأن الفئة لا يمكن أن ترث إلا من أصل واحد ولكن من واجهات متعددة.
النوع الذي تم تعداده هو أداة قوية نظرا لأنه يحدد فئة أو واجهة يمكننا وضع طرق وسمات فيها. بشكل افتراضي ، يضيف المترجم طرقا مثل values() الذي يرجع صفيفا يحتوي على القيم بالترتيب الذي تم الإعلان عنها.استعرض باستخدام التكرار for
الطريقة الثابتة القيم () < / span> مفيد في حالة الفحص على سبيل المثال:
< pre class = "prettyprint lang-java" >for ( محركات البحث المحرك: searchengines.values()) {
System.out.println (المحرك) ؛
}السمات والأساليب
يمكن أن يحتوي نوع التعداد على منشئات وطرق ومتغيرات وثوابت. يمكنك تهيئة الثوابت بالقيمة التي يجب تمريرها كوسيطة في منشئ.public class EnumExample {
public enum searchengines{
Google(160), Yahoo(66.4f), Bing(7.f), Baidu(66), Ask(4.6f);
زوار عائمون خاصون ؛
محركات البحث الخاصة (الزوار العائمون) {
this.visitor = الزوار ؛
}
}
الفراغ العام الثابت الرئيسي (سلسلة [] args) {
for ( محركات البحث: searchengines.values ()) {
System.out.println ("محرك البحث: "+ المحرك +"
الزوار: "+ engine.visitor +" الملايين") ؛
}
}
}
< / pre> الإخراج:
< pre class = "prettyprint lang-java" > محرك البحث: زوار Google: 160.0 مليون < br / > محرك البحث: زوار Yahoo: 66.4 مليون < br / > محرك البحث: Bing الزوار: 7.0 مليون < br / > محرك البحث: زوار بايدو: 66.0 مليون برميل < / > محرك البحث: اسأل الزوار: 4.6 مليون < برميل / >< / ما قبل > يتم الإعلان عن الثوابت < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >ثابت < / سبان> و < نمط الامتداد = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >final< / span> ولا يمكن تغييرها بمجرد إنشائها.مقارنة المساواة بين تعدادين
تتم المقارنة بالطريقة يساوي () < / span> أو مع المشغل "==" وكلاهما يعطي نفس النتيجة بحيث يكون لديك خيار الاختيار.
< / div>google search engines = searchengines.Google ؛
if(google.equals(GoogleSearchengines))
System.out.println ("مقارنة مع متساوين");
< / pre>if (google == searchengines.Google)
System.out.println ("مقارنة مع ==") ؛تعليمات التبديل
public class EnumExample{
public enum searchengines{
Google(160), Yahoo(66.4f), Bing(7.f), Baidu(66), Ask(4.6f);
زوار عائمون خاصون ؛
محركات البحث الخاصة (الزوار العائمون) {
this.visitor = الزوار ؛
}
}
اسم محركات البحث ؛
EnumExample(اسم محركات البحث){
this.name=name;
}
شعار الفراغ العام () {
التبديل (الاسم) {
Google:
System.out.println ("لا تكن خبيثا ، لا تفعل الشر") ؛ < / > الحوزة ؛
مربع ياهو:
System.out.println ("ياهو! هل ياهو؟"); < / > الحوزة ؛
box Bing:
System.out.println ("Bing هو للعمل.") ؛ < / > الحوزة ؛
box Baidu:
System.out.println ("بايدو تعرف الصينية بشكل أفضل") ؛ < / > الحوزة ؛
مربع يسأل:
System.out.println ("ما هو سؤالك؟") ؛ < / > الحوزة ؛
}
}
الفراغ الثابت العام الرئيسي (سلسلة [] args) {
مثال Google = رقم المثال الجديد (SearchEngines.Google) ؛
google.logo();
مثال enum yahoo = مثال جديد Enum (Searchengines.Yahoo) ؛
yahoo.logo();
مثال Num bing = SampleNum الجديد (SearchEngines.Bing) ؛
bing.logo();
Baidu مثال Enum = مثال بايدو الجديد Enum (SearchEngines.Baidu) ؛
baidu.logo ();
EnumExample اسأل = مثال جديد EnumExample(Searchengines.Ask);
ask.logo ();
}
}لا يمكنك إنشاء مثيل تعداد بالكلمة الأساسية الجديدة لأنه تم الإعلان عن المنشئ خاص ويتم إنشاؤه أثناء وقت التشغيل. حتى إذا لم تقم بتعيينه على خاص ، فإنه لا يزال يعتبر خاصا.toString و ValueOf< / h2>
toString ترجع اسم الثابت:
System.out.println (yahoo.toString ()) ؛ < / قبل > الدالة valueOf() يقوم بالمعالجة العكسية للطريقة toString() ، نعطيه الاسم ويعيد الثابت:System.out.println (yahoo.valueOf("Yahoo")); < / pre>compareTo< / h2>< / div>
تستخدم هذه الوظيفة لمقارنة تعدادين وإرجاع -1 أو 0 أو 1 إذا كان هذا الكائن أقل أو مساويا أو أكبر على التوالي.
< / div>تعرض وحدة التحكم -1 لأن "google" معلن قبل "yahoo".System.out.println (google.compareTo(yahoo));
ماذا تتذكر:
- إعلان سهل عن الثوابت والقيم ذات الصلة.
- التعدادات يرث من نمط java.lang.Enum.
- لا يمكن للتعدادات تنفيذ الواجهات.
- Enumerations <لا يمكن الإعلان عن الأساليب والمتغيرات كما في .< / li>><>
- يتم الإعلان عن المتغيرات والمنشئات خاصة.< / li>
- السماح بمقارنة تعدادين باستخدام الطريقة قارن بين () < / span >.< / li>
- Les التعدادات تستخدم مع بيان Switch.
المراجع: