एक सुझाव: बेहतर name()
का प्रयोग कर एक String
रूप नाम enum की प्राप्त करने के लिए, और जब भी आप मूल Enum
इसे से वापस पाने के लिए की जरूरत है, का उपयोग valueOf()
विधि - के बाद से valueOf()
नाम उम्मीद नहीं एक पैरामीटर के रूप में, ordinal। उदाहरण के लिए:
enum Example {ONE, TWO};
String name = Example.ONE.name();
Example e = Example.valueOf(Example.class, name); // e has value ONE
आप निश्चित रूप से क्रमसूचक का उपयोग करने की जरूरत है, ordinal()
विधि एक सूचकांक है जो आप संबंधित Enum
सरणी values()
विधि द्वारा लौटाए से पुनः प्राप्त करने के लिए उपयोग कर सकते वापस आ जाएगी। इस तरह:
int ordinal = Example.ONE.ordinal();
Example e = Example.values()[ordinal]; // e has value ONE
जैसा कि पहले ही बताया गया है, के रूप में दस्तावेज में कहा गया है EnumMap
उपयोग करें, क्योंकि यह
enum प्रकार कुंजी के साथ प्रयोग के लिए एक विशेष नक्शा कार्यान्वयन है। नक्शा बनाया गया है, जब एक enum मानचित्र में सभी कुंजी एक enum प्रकार से आना चाहिए जो निर्दिष्ट, स्पष्ट रूप से या स्पष्ट रूप से निर्दिष्ट है। Enum नक्शे आंतरिक रूप से सरणी के रूप में प्रतिनिधित्व कर रहे हैं। यह प्रतिनिधित्व बेहद कॉम्पैक्ट और कुशल है।
संपादित
आप (अपने स्वचालित रूप से आवंटित क्रमसूचक के अलावा अन्य) enum के प्रत्येक तत्व के लिए एक अलग कोड संबद्ध करने के लिए की जरूरत है, तो आप हमेशा enum करने के लिए एक विशेषता के रूप में यह जोड़ सकते हैं के साथ एक साथ, getters और setters, इस तरह:
public enum Manufacturers {
Honda(10),
GM(20),
Toyota(30),
Ferrari(40);
private int code;
Manufacturers(int code) {
this.code = code;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
उदाहरण के लिए:
Manufacturers m = Manufacturers.Honda;
System.out.println(m.getCode()); // prints 10
m.setCode(100);
System.out.println(m.getCode()); // prints 100
बस जागरूक रहें कि आप विशेषता से Enum
ऑब्जेक्ट का पुनर्निर्माण करने में सक्षम नहीं होंगे, क्योंकि प्रोग्रामर द्वारा परिभाषित किया गया था।
मैं औपचारिक मूल्य को स्पष्ट रूप से सेट नहीं कर सकता, मैंने कोशिश की: जीएम ("5"), टोयोटा ("6") – Blankman
नहीं, आप उन्हें सेट नहीं कर सकते - ordinals आदेश से मेल खाते हैं मूल्य enum के भीतर घोषित किया जाता है। – ziesemer
यदि किसी कारण से आपको enum के प्रत्येक तत्व (इसके स्वचालित रूप से असाइन किए गए ordinal के अलावा) से जुड़े एक अलग 'int' संख्या की आवश्यकता है, तो आप इसे enum में एक विशेषता के रूप में जोड़ सकते हैं, साथ ही गेटर्स –