StackOverflow高票问题: 如何将String转换为enum

问题

假设定义了如下的enum(枚举):

public enum Blah {  
    A, B, C, D
}

已知枚举对应的String值,希望得到对应的枚举值。例如,已知”A”,希望得到对应的枚举——Blah.A,应该怎么做?

Enum.valueOf()是否能实现以上目的,如果是,那我如何使用?

答案

是的,Blah.valueOf(“A”) 将会得到 Blah.A

静态方法valueOf() 和 values() 不存在于源码中,而是在编译时创建,我们也可以在JavaDoc查看到它们,比如 Dialog.ModalityType
就中出现这两个方法。

其他答案

我有一个挺赞的工具方法:

/**
 * A common method for all enums since they can't have another base class
 * @param  Enum type
 * @param c enum type. All enums must be all caps.
 * @param string case insensitive
 * @return corresponding enum, or null
 */
public static <T extends Enum> T getEnumFromString(Class c, String string) {  
    if( c != null && string != null ) {
        try {
            return Enum.valueOf(c, string.trim().toUpperCase());
        } catch(IllegalArgumentException ex) {
        }
    }
    return null;
}

你可以这么使用:

public static MyEnum fromString(String name) {  
    return getEnumFromString(MyEnum.class, name);
}

stackoverflow链接: http://stackoverflow.com/questions/604424/convert-a-string-to-an-enum-in-java

稿源:极客深思 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » StackOverflow高票问题: 如何将String转换为enum

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录