在Constants类中,我有一个带有一些名称的Enum:
static final enum NAMES {
One,
Two,
Three,
Four,
Five
}
我试图通过:
for (Constants.NAMES name in Constants.NAMES.values())
然后在开关中使用它们:
switch (index.key) {
case Constants.NAMES.One:
我还尝试仅使用One作为大小写,并使用Enumset进行循环,唯一可行的方法是使用“ One”作为字符串,但这违背了Enum的目的
这有效:
for (Constants.NAMES script : Constants.NAMES.values()) {
switch (index.key) {
case Constants.NAMES.ONE.name():
答案 0 :(得分:0)
定义您的枚举,如下所示:
enum NAMES {
ONE, TWO, THREE, FOUR, FIVE
}
static final
是与声明枚举一起使用的非法修饰符。另外,请确保常量仅使用大写字母定义。
然后使用:
public static void main(String[] args) {
String myStr = "something";
switch (NAMES.valueOf(myStr)) {
case ONE:
break;
case TWO:
break;
// the rest
default:
break;
}
}
或者,您可以创建一个静态方法来从enum
enum NAMES {
ONE, TWO, THREE, FOUR, FIVE;
public static NAMES fetchValue(String constant) {
NAMES name = null;
for (NAMES num : EnumSet.allOf(NAMES.class)) {
if (num.name().equals(constant)) {
name = NAMES.valueOf(constant);
}
}
return name;
}
}
并使用:
NAMES names = NAMES.fetchValue("ONE");
采用这种方法,即使找不到常量,代码也不会中断。