我有一个对象,我正在使用反射来创建 Class 对象。
我正在尝试将 Enum 字段转换为其 valueOf,但我不知道它是什么 Enum 类。
目前,我只是检查对象是否是这样的每个枚举:
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 block 。
我想使用这样的东西:
if (t.isEmun()) {
value = Enum.valueOf(t, v);
}
但是我有一个错误:
Required type: Class<T>
Provided type: Class<capture of ?>
如何转换我的 Class<capture of ?>
至Class<T>
?
最佳答案
您可以使用asSubclass()
来安全地转换:
value = Enum.valueOf(t.asSubclass(Enum.class), v);
关于java - 将类 <capture of ?> 转换为类 <T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74944653/