📜  更通用地将枚举解析转换为字符串 - 无论代码示例

📅  最后修改于: 2022-03-11 14:59:17.631000             🧑  作者: Mango

代码示例1
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 { }