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

标签 java enums

我有一个对象,我正在使用反射来创建 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/

相关文章:

java - 有没有一种有效的方法可以将纹理加载为 .PNG 图像以用于简单的 2D 游戏

JavaFX 扩展 PropertyValueFactory

java - RandomAccessFile 与 NIO channel

swift - 使用 R.Swift 库在 swift 中本地化枚举

java - 将枚举值关联到整数

scala - 我可以使用@switch 和枚举吗?

Java 泛型问题 : Class "not within bounds of type-variable" error.

java - 在 Android 中添加太多库有什么缺点吗?

java - Java 枚举类型中的 get() 方法

r - R中的类似枚举的参数