Java switch 语句使用 String 参数

原文同步至 http://www.waylau.com/java-switch-use-string/

当我尝试在 switch 语句使用 String 参数时(注意ctrType为字符串)

    switch (ctrType) {
    case "01" :
        exceptionType = "读FC参数数据";
        break;
    case "03" :
        exceptionType = "读FC保存的当前表计数据";
        break;
    default:
        exceptionType = "未知控制码:"+ctrType;
    }

提示如下错误:

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

意思是说,我的 jre 本版本太低,不支持。据查 在 Java 7之前,switch 只能支持 byte、short、char、int或者其对应的封装类以及 Enum 类型。在 Java 7中,String支持也终于被加上了。

解决

普通项目

安装 JDK 1.7+,在项目中更改配置引入该 JDK 版本依赖库。

Maven 项目

更改 pom.xml 文件,设置 maven-compiler-plugin 插件目标版本为 1.7+,例如

  <plugins>
  ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
  ...
    </plugins>
时间: 2024-10-12 13:19:47

Java switch 语句使用 String 参数的相关文章

JAVA SWITCH语句

/* switch语句 switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; .. .. default: 语句体n+1; break; } B:switch语句的格式解释 (1):switch表示这是switch语句 表达式的取值:byte,short,int,char JDK5以后可以是枚举(什么是枚举,以后再讲) JDK7以后可以是String (2):case后面跟的是要和表达式进行比较的值 (3):语句体部分可以是一条或多条语

Java7中Switch语句支持String

Java7新特性Swith语句中支持String 实例: public class StringSwitch { public static void main(String[] args) { System.out.println(getExpendedMessage("one")); System.out.println(getExpendedMessage("three")); System.out.println(getExpendedMessage(&qu

if...else if...else和switch语句的注意点,以及和js的if...else if...else的不同

java if...else if...else 语句 if 语句后面可以跟 elseif-else 语句,这种语句可以检测到多种可能的情况. 使用 if,else if,else 语句的时候,需要注意下面几点: if 语句至多有 1 个 else 语句,else 语句在所有的 elseif 语句之后. if 语句可以有若干个 elseif 语句,它们必须在 else 语句之前. 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行.(这点

java基础面试题:switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

package com.swift; public class Switch_Test { public static void main(String[] args) { /* * switch语句能否作用在byte上,能否作用在long上,能否作用在String上? */ byte zijie = 3; System.out.println(zijie); long changzheng=3; switch (changzheng) { //cannot switch on a value

Switch能否用string做参数?

由于小编自己的编译环境jdk用的是比较高,在命令窗口输入java -version即可看到.(打开命令窗口win+R,输入cmd,回车) java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode) String类型一直可以当做Switch的参数,编译和运行都没有

java7 语法糖 之 switch 语句中的string

Jdk7新增的switch 语句中常量可以string类型, 例如: @Test public void test_1(){ String string = "hello"; switch (string) { case "hello": System.out.println(string); break; default: throw new IllegalArgumentException("非法参数"); } } 语法糖的背后,其实用的对待

关于在java中向带有IN的SQL语句中传参数的问题

今天遇到俩个问题: 1.在使用表格模型的时候,从数据库查询出来的数据赋值到Jtable的时候永远只显示最后一天记录,前面的都被覆盖了.一直在究其原因,未果,遂择其道而行之(第二个问题). 2.为了解决上面的问题,我将SQL语句的条件换成IN,目的想把所有参数一并传过去,查询所有记录后在一并显示到Jtable上,实验证明我的做法是对的.但是,一直没有搞懂IN(?)这个问号应该如何传值. SQL : String sql = " select sxh,grbm,xm,yybm,fyze,qzfbf,

java基础:流程控制(选择结构switch语句)

(1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; } 格式解释说明: switch:说明这是switch语句. 表达式:可以是byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 case:后面的值就是要和表达式进行比较的值 break:表示程序到这里中断,跳出switch语句 default:如果所有的情况都不匹配,就执行这

黑马程序员----java基础之运算符、键盘录入、if switch语句、附相关面试题

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1:运算符(掌握) (1)算术运算符 A:+,-,*,/,%,++,-- 注意事项:整数相除只能得到整数,如果想得到小数,必须先把数据变化为浮点数类型.如3/4结果为0,3*0.1/4=0.75 B:+的用法 a:加法 b:正号 c:字符