有没有一种方法可以在switch语句中定义一个常量Map
?我的所有试验都使用静态地图here,here和其他地方都没有成功。为什么地图不变?在switch语句中选择case的常量映射?
对于行case (kws.get(KEYWORD_NAME)):
我总是得到constant string expression required
错误。
public class Demo {
public static final String KEYWORD_NAME = "Name";
public static final String KEYWORD_TYPE = "Type";
private static final Map<String, String> kws = Collections.unmodifiableMap(
new HashMap<String, String>() {{
put(KEYWORD_NAME, KEYWORD_NAME.toLowerCase());
put(KEYWORD_TYPE, KEYWORD_TYPE.toLowerCase());
}});
public static void parse(String kw){
switch(kw){
case (kws.get(KEYWORD_NAME)):
System.out.println("Test");
break;
default:
System.out.println("Unknown");
}
}
}
' case'表达式必须是*编译时常量*。你如何期望编译器知道'kws.get(KEYWORD_NAME)'会做什么? –
每个'switch'语句都可以使用Map完成。例如,你可以创建一个'Map'。 Java 8方法的引用使得这非常简单。 –
VGR