如何通过类将字符串值转换为Enum值?

这个问题在这里已经有了答案:

  • 通过字符串值查找Java枚举23个答案

  • 这实际上是一种痛苦,因为Enum被宣布的方式。 你不能用Class<?>调用valueOf (也不能用Class<? extends Enum<?>> )。 没有未经检查的转换的唯一方法是通过getEnumConstants

    public boolean tryCast(String value){
        for(Object o : enumClass.getEnumConstants()) {
            Enum<?> e = (Enum<?>) o;
            if(e.name().equals(value))
                return true;
        }
        return false;
    }
    

    如果你不关心未经检查的演员阵容,你可以这样做:

    try {
        Enum.valueOf( (Class) enumClass, value );
        return true;
    } catch(IllegalArgumentException e) {
        return false;
    }
    

    但是,你知道,有些人会抱怨,因为它是一种原始类型。 getEnumConstants可能更好,因为那样你就不会为这种事情使用异常。


    另外,由于您有Class<?>您可能需要执行类似的检查

    if( !Enum.class.isAssignableFrom(enumClass) )
        return false;
    

    或者在构造函数中抛出一个异常。

    链接地址: http://www.djcxy.com/p/38107.html

    上一篇: How to cast a String value to an Enum value by Class?

    下一篇: Getting java enum by name