如何通过类将字符串值转换为Enum值?
这个问题在这里已经有了答案:
这实际上是一种痛苦,因为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