java 将类〈capture of?>转换为类< T>

6psbrbz9  于 2023-01-01  发布在  Java
关注(0)|答案(1)|浏览(479)

我有一个对象,我正在使用反射创建类对象。
我正在尝试将枚举字段转换为它的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>

rsaldnfx

rsaldnfx1#

您可以使用asSubclass()安全地强制转换:

value = Enum.valueOf(t.asSubclass(Enum.class), v);

相关问题