Я мог бы чрезмерно спроектировать свое собственное решение, не осознавая, что Type.valueOf("enum string")
действительно существует.
Полагаю, это дает более детальный контроль, но я не уверен, что это действительно необходимо.
public enum Type {
DEBIT,
CREDIT;
public static Map<String, Type> typeMapping = Maps.newHashMap();
static {
typeMapping.put(DEBIT.name(), DEBIT);
typeMapping.put(CREDIT.name(), CREDIT);
}
public static Type getType(String typeName) {
if (typeMapping.get(typeName) == null) {
throw new RuntimeException(String.format("There is no Type mapping with name (%s)"));
}
return typeMapping.get(typeName);
}
}
Я полагаю, вы заменяете IllegalArgumentException
на RuntimeException
(или любое другое исключение, которое вы хотите выбросить), которое потенциально может очистить код.