脱离我的头顶:
Enum> convertedValue = Enum.valueOf((Class)type,value);
这会将字符串转换为类型的Enum类的枚举常量
编辑:现在我有一台电脑方便,我可以看到实际上有什么用.在没有编译器警告的情况下,以下任一情况都正确运行:
Enum> convertedValueA = Enum.valueOf(type,value);
Enum> convertedValueB = Enum.valueOf(type.asSubclass(Enum.class),value);
第二个调用asSubClass(),它会进行运行时检查以确保该类型是一些枚举类,但是valueOf()方法必须进行检查才能正常工作.
以下给了我一个编译错误:
Enum> convertedValueC = Enum.valueOf((Class extends Enum >>)type,value);
java: Foo.java:22: valueOf(java.lang.Class,java.lang.String) in java.lang.Enum cannot be applied to (java.lang.Class>,java.lang.String)
投射到通配符类型的复杂性使我感到困惑所以我可能尝试过错误的演员.此外,它没有运行时效果这一事实意味着它很容易弄错,永远不会发现.