package pwc.taxtech.atms.common; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class EnumHelper { private static Map<Class, List<IdKeyNameData>> enumMap; static { enumMap = new HashMap<Class, List<IdKeyNameData>>(); } public static List<IdKeyNameData> ToIdkeyNameCollection(Class enumType) { if (!enumMap.containsKey(enumType)) { synchronized (enumMap) { if (!enumMap.containsKey(enumType)) { enumMap.put(enumType, EnumToIdKeyNameCollection(enumType)); } } } return enumMap.get(enumType); } private static List<IdKeyNameData> EnumToIdKeyNameCollection(Class enumType) { List<IdKeyNameData> enumKeyNames = new ArrayList<IdKeyNameData>(); try { Method toName = enumType.getMethod("toName"); Method toCode = enumType.getMethod("toCode"); Method toDisplayName = enumType.getMethod("toDisplayName"); // 得到enum的所有实例 Object[] objs = enumType.getEnumConstants(); for (Object obj : objs) { IdKeyNameData newData = new IdKeyNameData(); newData.setId((Integer) toCode.invoke(obj)); newData.setKey((String) toName.invoke(obj)); newData.setName((String) toDisplayName.invoke(obj)); enumKeyNames.add(newData); } return enumKeyNames; } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return enumKeyNames; } }