一个简单通用的enum工厂类
public interface Identifiable<K> { K getId();}public class EnumFactory { public static <T extends Enum<T> & Identifiable<K> , K > T getEnum(Class<T> type, K id) { for (T t : type.getEnumConstants()) { if(t.getId().equals(id)) { return t; } } return null; }}public enum MonthEnum implements Identifiable<Integer>{ January(1), February(2), March(3), April(4), May(5), June(6); int value; private MonthEnum(int value){ this.value = value; } @Override public Integer getId() { return this.value; }}public enum WeekEnum implements Identifiable<String>{ Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday; @Override public String getId() { return name(); }}public class Client { public static void main(String[] args) { WeekEnum we = EnumFactory.getEnum(WeekEnum.class, "Monday"); System.out.println(we); MonthEnum me = EnumFactory.getEnum(MonthEnum.class, 4); System.out.println(me); }}