我有一个对象,我正在使用反射创建类对象。
我正在尝试将枚举字段转换为它的valueOf,但我不知道它是什么枚举类。
目前,我只是检查对象是否是每个枚举,如下所示:
Class<?> t = obj.getType();
if (t == MyEnumA.class) {
value = MyEnumA.valueOf(v)
} else if (t == MyEnumB.class) {
value = MyEnumB.valueOf(v)
} else if ...
我目前有几个不同的枚举类,当我添加更多的枚举类时,我必须为新的枚举添加一个新的else-if块。
我想用这样的东西:
if (t.isEmun()) {
value = Enum.valueOf(t, v);
}
但我有一个错误:
Required type: Class<T>
Provided type: Class<capture of ?>
如何将Class<capture of ?>
转换为Class<T>
?
1条答案
按热度按时间rsaldnfx1#
您可以使用
asSubclass()
安全地强制转换: