我有一个简单的枚举
public enum Columns {VENDOR, ITEM};
我正在尝试提取并驱动开关代码块
我得到的classNotFound
看起来是enum的内部类,b / c显示[class]_A$0
。我认为枚举是一个静态的最终和创建的对象,我可以直接在交换机中使用。有人可以澄清吗?
colObject="VENDOR";
for (Columns c : Columns.values()) {
if (colObject.toUpperCase().equals(c.name())) {
System.out.println("Got it in iteration. i= " + i + " c= " +
c);
switch (c.valueOf(colObject.toUpperCase())) {
case VENDOR: {
System.out.println("Got it in switch case= " + c.name());
}
break;
default:
System.out.println("Fell thru.");
break;
}//end switch
}//end if
}//end for
答案 0 :(得分:4)
尝试:
switch (Columns.valueOf(colObject.toUpperCase())) {
答案 1 :(得分:2)
您可以使用java.lang.Enum
课程。 Enum
课程有助于将您的String "VENDOR"
转换为enum-VENDOR
需要添加以下代码行
Enum.valueOf(Columns.class,colObject))
java.lang.Enum
可以多态使用,而列(enum
)不能以多态方式使用。
完整代码
enum Columns {
VENDOR, ITEM
}
class Test {
public static void main(String[] args) {
String colObject = "VENDOR";
switch (Enum.valueOf(Columns.class, colObject))
{
case VENDOR: {
System.out.println("Got it in switch case= VENDOR");
break;
}
default:
System.out.println("Fell thru.");
break;
}
}
}