У нас есть REST API, где клиенты могут предоставлять параметры, представляющие значения, определенные на сервере в Java Enums.
Таким образом, мы можем предоставить описательную ошибку, мы добавляем этот метод lookup
к каждому Enum. Похоже, мы просто копируем код (плохо). Есть ли более эффективная практика?
public enum MyEnum {
A, B, C, D;
public static MyEnum lookup(String id) {
try {
return MyEnum.valueOf(id);
} catch (IllegalArgumentException e) {
throw new RuntimeException("Invalid value for my enum blah blah: " + id);
}
}
}
Обновить. Сообщение об ошибке по умолчанию, предоставленное valueOf(..)
, будет No enum const class a.b.c.MyEnum.BadValue
. Я хотел бы предоставить более описательную ошибку API.