有沒有一種方法可以在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