public static <T extends Enum> T toEnum(Class<T> cls, String value, Enum defaultEnum) { T[] enumConstants = cls.getEnumConstants(); for (T e : enumConstants) { if (e.name().equals(value)) { return e; } } value = value.toUpperCase().replace('-', '_'); for (T e : enumConstants) { if (e.name().equals(value)) { return e; } } value = Str.underBarCase(value); for (T e : enumConstants) { if (e.name().equals(value)) { return e; } } return (T) defaultEnum; }
public static <T extends Enum> T toEnum(Class<T> cls, int value) { T[] enumConstants = cls.getEnumConstants(); for (T e : enumConstants) { if (e.ordinal() == value) { return e; } } return null; }
public static <T extends Enum> T toEnumOrDie(Class<T> cls, int value) { T[] enumConstants = cls.getEnumConstants(); for (T e : enumConstants) { if (e.ordinal() == value) { return e; } } die("Can't convert ordinal value " + value + " into enum of type " + cls); return null; }