在 switch 语句中使用构造函数枚举
Enum with constructor in switch-statement
这可能是一个愚蠢的问题,但我不明白为什么它不起作用:
public class MainClass {
public enum Header{
ValueType("Value Type"),
LimitType("Limit Type"),
Currency("Currency");
Header(String value) {
this.value = value;
}
private final String value;
public String getValue(){
return value;
}
}
static void getHeaderValue (String headerValue) {
switch (headerValue) {
case Header.LimitType.getValue() :
System.out.println(Header.LimitType.getValue());
break;
case Header.ValueType.getValue() :
System.out.println(Header.ValueType.getValue());
break;
case Header.Currency.getValue() :
System.out.println(Header.Currency.getValue());
break;
default:
break;
}
}
}
编译器注意到 "constant string expression required"。预先感谢您的解释。
与您的 enum 无关,但与您的 switch 语句无关,它的 case 个子句。 case 需要像 "helloWorld"
这样的常量表达式,表达式 Header.LimitType.getValue()
也许 returns 是一个永远不会改变的值,但它对编译器来说不是常量表达式.
这可能是一个愚蠢的问题,但我不明白为什么它不起作用:
public class MainClass {
public enum Header{
ValueType("Value Type"),
LimitType("Limit Type"),
Currency("Currency");
Header(String value) {
this.value = value;
}
private final String value;
public String getValue(){
return value;
}
}
static void getHeaderValue (String headerValue) {
switch (headerValue) {
case Header.LimitType.getValue() :
System.out.println(Header.LimitType.getValue());
break;
case Header.ValueType.getValue() :
System.out.println(Header.ValueType.getValue());
break;
case Header.Currency.getValue() :
System.out.println(Header.Currency.getValue());
break;
default:
break;
}
}
}
编译器注意到 "constant string expression required"。预先感谢您的解释。
与您的 enum 无关,但与您的 switch 语句无关,它的 case 个子句。 case 需要像 "helloWorld"
这样的常量表达式,表达式 Header.LimitType.getValue()
也许 returns 是一个永远不会改变的值,但它对编译器来说不是常量表达式.