Java枚举开关
我有一个简单的枚举Java枚举开关,java,enums,switch-statement,Java,Enums,Switch Statement,我有一个简单的枚举 public enum Columns {VENDOR, ITEM}; 我试图提取并驱动一个开关代码块。 我得到的classNotFound似乎是枚举的内部类,b/c它显示了[class]\u A$0。我认为enum是一个静态的最终创建对象,可以直接在交换机中使用。有人能澄清一下吗 colObject="VENDOR"; for (Columns c : Columns.values()) { if (colObject.toUppe
public enum Columns {VENDOR, ITEM};
我试图提取并驱动一个开关代码块。我得到的
classNotFound
似乎是枚举的内部类,b/c它显示了[class]\u A$0
。我认为enum是一个静态的最终创建对象,可以直接在交换机中使用。有人能澄清一下吗
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
尝试:
尝试:
您可以使用
java.lang.Enum
classEnum
类将帮助将字符串“VENDOR”
转换为Enum VENDOR
需要添加以下代码行
枚举值(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;
}
}
}
您可以使用
java.lang.Enum
classEnum
类将帮助将字符串“VENDOR”
转换为Enum VENDOR
需要添加以下代码行
枚举值(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;
}
}
}
适用于我(输出为
“在switch case=VENDOR中获得”
)-无编译时或运行时错误。您能否提供一个完整的版本来重现这个问题,以及一些关于您正在使用的JDK版本的附加信息?是的,您的代码如图所示可以正常工作(尽管您确实需要从非静态上下文修复静态访问)。包括完整的堆栈跟踪和Andreas建议的SSCCE。对我有效(输出为“在switch case=VENDOR中获得”
)-无编译时或运行时错误。您能否提供一个完整的版本来重现这个问题,以及一些关于您正在使用的JDK版本的附加信息?是的,您的代码如图所示可以正常工作(尽管您确实需要从非静态上下文修复静态访问)。按照Andreas的建议,包括完整堆栈跟踪和SSCCE。虽然在对象上而不是在类上调用静态方法(valueOf()
)确实是一种不好的做法,但从技术上讲并没有什么区别。这两种变体都适用于我。虽然在对象上而不是在类上调用静态方法(valueOf()
)确实是一种不好的做法,但从技术上讲并没有什么区别。这两种变体都适用于我。