यह एंड्रॉइड इतिहास से संबंधित है। Froyo से पहले संस्करणों में पुष्टिकरण प्रदर्शन मुद्दों थे। डेवलपर्स द्वारा enum का उपयोग न करने की सिफारिश की गई थी। चूंकि फोरियो प्रदर्शन प्रलेखन के लिए डिजाइनिंग को here वर्णित के रूप में पुनः लिखा गया था।
आपने ध्यान दिया होगा रूप में, हम Froyo के लिए प्रदर्शन प्रलेखन के लिए डिजाइनिंग दुबारा लिखा। पहले यह सामानों का एक गुच्छा था जो किसी बिंदु पर सच साबित हुआ था, लेकिन वास्तविकता के साथ किसी भी संबंध को सहन करना पड़ा। फ्रायओ में, दस्तावेज़ में प्रत्येक एकल दावा को साबित करने के लिए एक बेंचमार्क द्वारा समर्थित किया गया है (या, भविष्य में, इसे अस्वीकार कर दें)। आप अपने ब्राउज़र में "प्रदर्शन के लिए डिजाइनिंग" बेंचमार्क को देख सकते हैं।
लेकिन विरासत सामग्री की संरचना को बदलने में कोई बात नहीं थी।
प्रदर्शन स्ट्रिंग को संग्रहीत करने के लिए आवश्यक होने से संबंधित हो सकता है। प्रत्येक स्थिरांक बनाम एकाधिक enums के लिए एक वर्ग के निर्माण के बीच महत्वपूर्ण अंतर है।
जावा 7 में उदाहरण के लिए
आप दो क्षेत्रों के साथ एक enum है जब आप चुनाव निरंतर में और दो स्थिर अंतिम पूर्णांकों के साथ एक वर्ग के लिए 44 आइटम की जरूरत है आप की जरूरत केवल 17.
क्या फर्क
class ContantField {
public static final int f1 = 0;
public static final int f2 = 1;
}
enum ContantEnum {
E1,E2
}
है
यह दो घोषणाएं संग्रहीत और उपयोग किए जाने के तरीके में बहुत अलग हैं। ContantEnum
के सरलीकरण की तरह
class ContantEnum {
public static final Enum enum0 = new Enum("V1",0);
public static final Enum enum1 = new Enum("V2",1);
public static final Enum[] values = new Enum[] {enum0,enum1};
}
दिखाई दे सकता है इस सरलीकरण करके आप देख सकते हैं कि enum
int
की तुलना में अधिक स्मृति संसाधनों की आवश्यकता है।
आपके प्रश्न का उत्तर के लिए, यह enums की भूमिका समझा जाना चाहिए। Enum की एक भूमिका संकलन समय प्रकार सुरक्षा को बढ़ाने के लिए है।
का कहना है कि इस उदाहरण देखें:
public void setImportantThing(int priviledge, int rights)
public void setImportantThing(Privilege p, Right r)
int
के मामले में हम एक पूर्णांक है कि किसी भी मूल्य पारित कर सकते हैं। enum
के टेकेस में हमें उचित उपयोग करने के लिए मजबूर होना पड़ता है।
मामले हम यहाँ है संकलन समय सत्यापन और क्रम पर स्मृति के उपयोग के बीच व्यापार बंद है। आपको अपने लिए निर्णय लेना चाहिए जब आपको enum
का उपयोग करना चाहिए और जहां static int
पर्याप्त सुरक्षित है।
नोट: enum संस्करण 1.5 में जावा के लिए पेश किया गया था, उन्हें उपयोग करने से पहले यह काफी समस्याग्रस्त more था।
एंड्रॉयड स्टूडियो बीटा में, डेवलपर एनोटेशन का उपयोग कर प्रकार सुरक्षा लागू करने के लिए सक्षम हो जाएगा।
आप Enum इस्तेमाल कर सकते हैं जब आप सुनिश्चित करें कि आप अपने * पूर्व निर्धारित * स्थिरांक की एक सबसेट से गुजर रहे हैं बनाना चाहते देखें। – TheLostMind
मैंने यह भी खुद को आश्चर्यचकित किया। मुझे नहीं लगता कि एंड्रॉइड स्रोत कोड भी enums का उपयोग करता है। – wvdz
अपने कोड में enums का उपयोग करें। एंड्रॉइड में कई मूल्य झंडे हैं जिन्हें जोड़ा जा सकता है (OR'ed)। इसके अलावा एंड्रॉइड कोर "काफी पुराना" है, इसलिए यह हो सकता है कि जब वे जावा का हिस्सा नहीं थे तो उन्होंने विकास शुरू किया। इसके अलावा यह एक एम्बेडेड सिस्टम है, enums अधिक स्मृति की जरूरत है। – brummfondel