今天我的同事遇到了一个有趣的问题,虽然我认为实际上的大局答案是“我们遇到这个问题说明我们做错了什么”,但我还是想问一下。
以下是给定的内容:
public class CrazyEnumTest {
public class EnumeratedThing<T extends Enum<T>> {
public T myValue;
public EnumeratedThing(T value) {
myValue = value;
}
}
public static void main (String[] args) {
String className = args[0];
String enumValue = args[1];
Enum<?> value1 = Enum.valueOf(Class.forName(className), enumValue);
EnumeratedThing<?> thing1 = new EnumeratedThing(value1);
}
}
我在调用Enum.valueOf时遇到了以下编译错误:
绑定不匹配:类型为Enum的泛型方法valueOf(Class, String)对参数(Class, String)不适用。捕获类型capture#1-of ?不是>的有限制的参数的有效替代。
因此,我的问题是:是否可能仅凭枚举类型名称的字符串表示以及其中一个值的.name(),作为Enum对象,获取对应的枚举类型对象的引用?