Sabitleri numaralandırmak için Dizeleri eşleyen numaralandırmanızda statik bir Harita kullanabilirsiniz. Bunu bir 'getEnum' statik yönteminde kullanın. Bu, String değerinden bir tane almak istediğiniz her seferde numaralandırmalar arasında yineleme ihtiyacını atlar.
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;
}
}
Sadece haritanın statik başlatılmasının, enum sabitlerinin bildiriminin altında gerçekleştiğinden emin olun.
BTW - bu 'ImmutableMap' türü Google guava API'sindendir ve bu gibi durumlarda kesinlikle tavsiye ederim.
DÜZENLEME - Yorum başına:
- Bu çözüm, atanan her dize değerinin benzersiz olduğunu ve boş olmadığını varsayar. Numaralamayı oluşturan kişinin bunu kontrol edebileceği ve dizenin benzersiz ve boş olmayan enum değerine karşılık geldiği göz önüne alındığında, bu güvenli bir kısıtlama gibi görünür.
- Soruda sorulduğu gibi 'toSTring ()' yöntemini ekledim