1
我想写一个方法,我可以在运行时将字符串转换为枚举对象,以用于泛型枚举。我有一个方法签名:未检查泛型类型的类型转换?
public static <T extends Enum<T>> Enum<T> foo(String string, Class<T> clazz)
但是,我从一个类,它的泛型类型参数没有明确扩展枚举调用它。即
class bar<X> {
private Class<X> clazz;
if (XIsAnEnum()) {
foo(string, clazz)
}
}
这并不编译,因为即使我知道,从XIsAnEnum
逻辑,即X extends Enum<X>
,我没有明确说明这一点在泛型类型参数的定义,所以它不是一个有效的参数。
有没有办法从Class<X>
到Class<X extends Enum<X>>
做一个未经检查的剧组演员,或者我将不得不在创建一个新的类bar2<X extends Enum<X>>
,当我想使用枚举?
我觉得你错过了一些代码。你有什么不会编译,因为你没有在方法中的if语句。 – Troncoso
是的,在现实中会有一些额外的代码,但它不会影响问题。 –
字符串包含什么?如果它只是一个枚举常量的名称,可以执行'MyEnum.valueOf(string)'来获得相应的'MyEnum'常量,并且不需要编写该方法。 – Jesper