Создайте отображение (статическую карту) внутри вашего перечисления для хранения карты между именем , которое будет предоставлено пользователем перечислению.
public enum Alignment {
Evil("Evil"),
Neutral("Neutral"),
Good("Good"),
Undefined("Undefined");
private static final Map<String, Alignment> MAPPINGS = new HashMap<>();
static {
for (Alignment alignment : Alignment.values()) {
MAPPINGS.put(alignment.getName(), alignment);
}
}
private String name;
Alignment(String name) {
this.name = name;
}
public String getName() {
return name;
}
public Alignment getAlignmentForName(String name) {
return MAPPINGS.get(name);
}
Теперь вы можете использовать getAlignmentForName
, чтобы отобразить пользовательский ввод в enum. Он вернет null
для недопустимых значений.
Преимущество этого заключается в том, что вам не нужно менять код при добавлении нового экземпляра enum ... В вашем случае необходимо добавить соответствующий регистр переключателей.
Примечание: Имена полей перечисления должны быть заглавными буквами в соответствии с соглашениями .