jdk 8不允许在switch语句中使用string?为什么

时间:2015-09-18 15:15:35

标签: java

error:
Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum constants are permitted code.  

以下是一个例子:

String typeOfDay;
         switch (dayOfWeekArg) {
             case "Monday":
                 typeOfDay = "Start of work week";
                 break;
             case "Tuesday":
             case "Wednesday":
             case "Thursday":
                 typeOfDay = "Midweek";
                 break;
             case "Friday":
                 typeOfDay = "End of work week";
                 break;
             case "Saturday":
             case "Sunday":
                 typeOfDay = "Weekend";
                 break;
             default:
                 throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
         }

2 个答案:

答案 0 :(得分:18)

Cannot switch on a value of type String for source level below 1.7

您没有使用jdk 8.您需要更新java或修复IDE的编译器合规级别。

Eclipse 中更改编译器合规性级别:

打开窗口>偏好> Java>编译器

更改" JDK合规性"下的编译器合规性级别到1.8

更改 Netbeans 中的来源级别:

在“项目”视图中右键单击“库”节点,然后选择“属性”。

选择"来源"并将源级别设置为1.8

更改 IntelliJ IDEA 中的项目字节码版本:

打开文件>设置>构建,执行,部署>编译器> Java编译器

项目字节码版本设置为1.8

答案 1 :(得分:1)

强烈建议您使用if ("Monday".equals(dayOfWeekArg))代替切换。因为它支持所有JDK。而现在,大多数应用程序都运行在JDK 1.7上。