I have a set of classes for this, but I have no name for it except Encodable
interface Encodable<T>{ T getCode(); } public class EnumUtils{ public static <U, T extends Enum<T> & Encodable<U>> T getValueOf( @Nonnull Class<T> enumClass, @Nullable U code){ for (T e : enumClass.getEnumConstants()){ if (Objects.equal(e.getCode(), code)) return e; } throw new IllegalArgumentException("No enum found for " + code); } }
source share