मैं C # से बहुत परिचित हूं लेकिन जावा में अधिक काम करना शुरू कर रहा हूं। मुझे यह जानने की उम्मीद है कि जावा में एनम मूल रूप से सी # में उन लोगों के बराबर थे, लेकिन स्पष्ट रूप से यह मामला नहीं है। प्रारंभ में मैं यह जानने के लिए उत्साहित था कि जावा एनम में डेटा के कई टुकड़े हो सकते हैं जो बहुत फायदेमंद लगते हैं ( http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html )। हालाँकि, तब से मुझे बहुत सारी सुविधाएँ याद आ रही हैं जो C # में तुच्छ हैं, जैसे कि एक enum तत्व को एक निश्चित मान को आसानी से असाइन करने की क्षमता, और परिणामस्वरूप एक सभ्य राशि को प्रयास के बिना एक एनम में पूर्णांक में परिवर्तित करने की क्षमता (आदि) यानी जावा एनम से मेल करने के लिए पूर्णांक मान बदलें )।
तो मेरा सवाल यह है: क्या सार्वजनिक स्थिर अंतिम क्षेत्रों के झुंड के साथ एक वर्ग पर जावा एनमों का कोई लाभ है? या यह सिर्फ अधिक कॉम्पैक्ट वाक्यविन्यास प्रदान करता है?
संपादित करें: मुझे और अधिक स्पष्ट होने दें। एक ही प्रकार के सार्वजनिक स्थिर अंतिम क्षेत्रों के एक समूह के साथ एक वर्ग पर जावा एनमों का क्या लाभ है ? उदाहरण के लिए, पहले लिंक पर ग्रहों के उदाहरण में, इन सार्वजनिक स्थिरांक के साथ एक वर्ग पर एक दुश्मनी का क्या फायदा है:
public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static final Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static final Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static final Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static final Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static final Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static final Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static final Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
जहाँ तक मैं बता सकता हूँ, कैसबेलैंका का जवाब केवल यही है जो इसे संतुष्ट करता है।
S
, इसलिए अब हम संभवतः उन्हें कार्यों में पारित करने के बारे में बात कर रहे हैं, आदि क्या हमें टाइप-सफ़टी की आवश्यकता है ? ठीक है, नहीं, लेकिन फिर ज्यादातर लोग "सब कुछ एक void*
अच्छी शैली" के सी-शैली प्रकारों पर विचार करते हैं और यह बग को रोक सकता है (विशेषकर यदि एक से अधिक एनुम / स्ट्रिंग पैरामीटर पारित कर रहा है!)। इसके अलावा यह स्थिरांक को अपने स्वयं के नामस्थान आदि में रखता है, इसके विपरीत, केवल सादे चर रखने का कोई वास्तविक लाभ नहीं है।
int
एस के साथ , कोई प्रकार की सुरक्षा नहीं है क्योंकि कोई भी मूल्य पारित कर सकता है। दूसरी ओर, टाइप की गई वस्तुएं, प्रकार की सुरक्षा के मामले में इनम से अलग नहीं हैं।
public static final
फ़ील्ड है, जो टाइप किए गए मान हो सकते हैं और जरूरी नहीं किint
एस।