将string映射到枚举值通常是valueOf静态方法为您所做的。 所以如果你想用同义词来完成这个,你将不得不开发类似的东西。 但是我们不想给出一个我们可以重写静态方法的存在,所以我们只是为了这个目的命名它: fromString应该是合适的。
public enum Language { ENGLISH("eng", "en", "en_GB", "en_US"), GERMAN("de", "ge"), CROATIAN("hr", "cro"), RUSSIAN("ru"), BELGIAN("be",";-)"); static final private Map ALIAS_MAP = new HashMap(); static { for (Language language:Language.values()) { // ignoring the case by normalizing to uppercase ALIAS_MAP.put(language.name().toUpperCase(),language); for (String alias:language.aliases) ALIAS_MAP.put(alias.toUpperCase(),language); } } static public boolean has(String value) { // ignoring the case by normalizing to uppercase return ALIAS_MAP.containsKey(value.toUpperCase()); } static public Language fromString(String value) { if (value == null) throw new NullPointerException("alias null"); Language