0

我有一个简单的枚举

public enum Columns {VENDOR, ITEM};

我正在尝试提取和驱动开关代码块。
我得到classNotFound的似乎是枚举的内部类,b/c 它显示[class]_A$0。我认为 enum 是一个静态的 final 和创建的对象,我可以直接在 switch 中使用。有人可以澄清吗?

      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
4

2 回答 2

4

尝试:

switch (Columns.valueOf(colObject.toUpperCase())) {
于 2013-04-03T11:37:07.273 回答
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;
            }
    }
}
于 2013-04-03T11:50:34.177 回答