Mogłem przeprojektować własne rozwiązanie, nie zdając sobie sprawy, że Type.valueOf("enum string")faktycznie istniało.
Myślę, że daje to bardziej szczegółową kontrolę, ale nie jestem pewien, czy jest to naprawdę konieczne.
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);
}
}
Myślę, że wymieniasz się IllegalArgumentExceptionna RuntimeException(lub jakikolwiek wyjątek, który chcesz rzucić), który może potencjalnie oczyścić kod.