【发布时间】:2014-01-31 15:02:35
【问题描述】:
我有一个相当简单的问题。
我有一个 java.lang.reflect.Type 类型的变量,我想对它做两件不同的事情,以防它持有类或枚举。我可以通过简单地询问.isEnum() 来相当简单地检查变量是否为枚举。但是,要调用特定的枚举方法,我需要将此变量转换为枚举。这是一些用于说明的代码。我知道这没什么意义,但它只是为了演员说明:
public class TestClass {
public static String text = "MySampleTextClass.";
}
public enum TestEnum {
MySampleText
}
public class Tester {
public static Object retrieveValue (java.lang.reflect.Type myVar, String enumStringValue) {
String enumStringValue = "MySampleText";
// the variable is enum!!!
if (myVar.isEnum()) {
return (Enum myVar).valueOf(enumStringValue);
}
// the variable is class!!!
else {
return myVar.getClass().getSimpleName();
}
}
}
我试过像
这样的演员表(java.lang.Enum myVar).valueOf(enumString);
或
(java.lang.Enum<?> myVar).valueOf(enumString);
但我不能让它工作。
有什么想法吗?
【问题讨论】:
-
Type没有isEnum方法。使用Class不是更简单吗?
标签: java reflection enums