switch语法格式如下:
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
expression 支持的类型有
- 基本数据类型:byte, short, char, int
- 包装数据类型:Byte, Short, Character, Integer
- 枚举类型:Enum
- 字符串类型:String(Jdk 7+ 开始支持)
If语句
// 原始代码
String tableName = pointArr[0].substring(0, 2).toUpperCase();
if("WH".equals(tableName)){
setData(x.getWH(), address, pdatetime, value);
}
if("YC".equals(tableName)){
setData(x.getYC(), address, pdatetime, value);
}
if("YK".equals(tableName)){
setData(x.getYK(), address, pdatetime, value);
}
if("YT".equals(tableName)){
setData(x.getYT(), address, pdatetime, value);
}
if("YX".equals(tableName)){
setData(x.getYX(), address, pdatetime, value);
}
转enum语句
// 建立枚举
public enum TableTypeEnum {
WH("WH"),
YC("YC"),
YK("YK"),
YX("YX"),
YT("YT");
private String name;
TableTypeEnum(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static TableTypeEnum getByName(String name){
for (TableTypeEnum tableTypeEnum :values()) {
if(tableTypeEnum.getName().equals(name)){
return tableTypeEnum;
}
}
return null;
}
}
// 代码变更,引入枚举
String tableName = pointArr[0].substring(0, 2).toUpperCase();
TableTypeEnum tableTypeEnum = TableTypeEnum.getByName(tableName);
switch (tableTypeEnum){
case WH:
setData(x.getWH(), address, pdatetime, value);break;
case YC:
setData(x.getYC(), address, pdatetime, value);break;
case YK:
setData(x.getYK(), address, pdatetime, value);break;
case YT:
setData(x.getYT(), address, pdatetime, value);break;
case YX:
setData(x.getYX(), address, pdatetime, value);break;
default:
break;
}
注意:
- case 里面必须跟 break,不然程序会一个个 case 执行下去,直到最后一个 break 的 case 或者 default 出现。
- case 条件里面只能是常量或者字面常量。
- default 语句可有可无,最多只能有一个。