आप अपने एनम में एक स्थिर मानचित्र का उपयोग कर सकते हैं जो स्ट्रिंग्स को एनम स्थिरांक को मैप करता है। 'GetEnum' स्टैटिक विधि में इसका उपयोग करें। यह हर बार जब आप अपने स्ट्रिंग मूल्य से एक प्राप्त करना चाहते हैं, तो एनम के माध्यम से पुनरावृति करने की आवश्यकता को पूरा करता है।
public enum RandomEnum {
StartHere("Start Here"),
StopHere("Stop Here");
private final String strVal;
private RandomEnum(String strVal) {
this.strVal = strVal;
}
public static RandomEnum getEnum(String strVal) {
if(!strValMap.containsKey(strVal)) {
throw new IllegalArgumentException("Unknown String Value: " + strVal);
}
return strValMap.get(strVal);
}
private static final Map<String, RandomEnum> strValMap;
static {
final Map<String, RandomEnum> tmpMap = Maps.newHashMap();
for(final RandomEnum en : RandomEnum.values()) {
tmpMap.put(en.strVal, en);
}
strValMap = ImmutableMap.copyOf(tmpMap);
}
@Override
public String toString() {
return strVal;
}
}
बस यह सुनिश्चित कर लें कि नक्शा का स्थैतिक आरम्भ ऐनुम स्थिरांक की घोषणा के नीचे होता है।
BTW - वह 'ImmutableMap' प्रकार Google अमरूद एपीआई से है, और मैं निश्चित रूप से इस तरह के मामलों में इसकी सिफारिश करता हूं।
EDIT - टिप्पणियों के अनुसार:
- यह समाधान मानता है कि प्रत्येक निर्दिष्ट स्ट्रिंग मान अद्वितीय और गैर-शून्य है। यह देखते हुए कि एनम के निर्माता इसे नियंत्रित कर सकते हैं, और यह कि स्ट्रिंग अद्वितीय और गैर-शून्य एनम मान से मेल खाती है, यह एक सुरक्षित प्रतिबंध की तरह लगता है।
- मैंने 'toSTring ()' विधि को प्रश्न में पूछा है