Я мог перестроить свое собственное решение, не осознавая, что оно 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
(или что - то исключение вы хотите бросить) , которые потенциально могли бы чистый код вверх.