Да, добавить строку в конструктор перечисления (указать конструктор в перечислении, которое принимает строку) и создать перечисления с текстовым значением a, b, c.И т. Д. Затем реализуйте статический метод фабрики для перечисления, который принимает строку и возвращает экземпляр перечисления.Я называю этот метод textValueOf.Существующий метод valueOf в enum не может быть использован для этого.Примерно так:
public enum EnumWithValueOf {
VALUE_1("A"), VALUE_2("B"), VALUE_3("C");
private String textValue;
EnumWithValueOf(String textValue) {
this.textValue = textValue;
}
public static EnumWithValueOf textValueOf(String textValue){
for(EnumWithValueOf value : values()) {
if(value.textValue.equals(textValue)) {
return value;
}
}
throw new IllegalArgumentException("No EnumWithValueOf
for value: " + textValue);
}
}
Это без учета регистра, и текстовое значение может отличаться от имени перечисления - идеально, если коды вашей базы данных эзотерические или не описательные, но вам нужны более подходящие имена в коде Java.Код клиента затем сделать:
EnumWithValueOf enumRepresentation = EnumWithValueOf.textValueOf("a");