🌈 搜索
📅  最后修改于: 2022-03-11 14:59:17.631000             🧑  作者: Mango
private interface EnumerationToStringHelper { List ProvideEnumerationValues(); Boolean CompareEnumerationToString(String possibleEnumeration, Object enumerationValue); } private class ExampleEnumToStringHelper implements EnumerationToStringHelperExampleEnum { public List ProvideEnumerationValues(){ return (List)ExampleEnum.values(); } public Boolean CompareEnumerationToString(String possibleEnumeration, Object enumerationValue) { return ((ExampleEnum)enumerationValue).name().equalsIgnoreCase(possibleEnumeration); } } private static Map TypeToEnumerationMap; private static void PopulateTypeToEnumerationMap() { TypeToEnumerationMap = new Map { Type.forName('ExampleEnum') => new ExampleEnumToStringHelper() }; } public static Object ConvertStringToEnumeration(Type enumerationType, String possibleEnumeration) { if(possibleEnumeration == null) return null; if(TypeToEnumerationMap == null) PopulateTypeToEnumerationMap(); EnumerationToStringHelper conversionAction = TypeToEnumerationMap.get(enumerationType); if(conversionAction == null) throw new EnumerationToStringException('The Type you enter is either a) not an enumeration or b) not a supported enumeration.'); for(Object particalarEnumValue : conversionAction.ProvideEnumerationValues()) if(conversionAction.CompareEnumerationToString(possibleEnumeration, particalarEnumValue)) return particalarEnumValue; return null; } public class EnumerationToStringException extends Exception { }