因此,条件中的所有变量都是静态字符串。 type
本身就是一个字符串。
switch(type) {
case (INT || TINYINT):
preparedStatement = setInteger(preparedStatement, value, index);
break;
case (BIGINT || LONG):
preparedStatement = setLong(preparedStatement, value, index);
break;
case (DATETIME || TIMESTAMP):
preparedStatement = setTimestamp(preparedStatement, value, index);
break;
case (MEDIUMTEXT || ENUM || TEXT || LONGTEXT || VARCHAR):
preparedStatement = setString(preparedStatement, value, index);
break;
}
答案 0 :(得分:4)
首先,Java 7+支持字符串的switch
语句,但Java 6及以前版本不支持。
接下来,||
运算符(逻辑或运算符)仅适用于boolean
值,而不适用于String
值。但是你可以通过列出案例来获得相同的代码,以便在多个案例中运行,而不会超过相关代码:
switch(type) {
case INT:
case TINYINT:
// This code will run for INT and TINYINT only.
preparedStatement = setInteger(preparedStatement, value, index);
break;
case BIGINT:
case LONG:
// This code will run for BIGINT and LONG only.
preparedStatement = setLong(preparedStatement, value, index);
break;
// etc.
答案 1 :(得分:2)
Java 7 example:
public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
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);
}
return typeOfDay;
}
此外,我从未在OR
内部看到switch
声明。我强烈建议不要这样做。
答案 2 :(得分:1)
假设您使用的是Java SE 7(或更高版本)且常量为static final String
s,则语法不是Java。
case INT: case TINYINT:
答案 3 :(得分:1)
这个表达式评估的内容是什么?
INT || TINYINT
INT
和 TINYINT
我只看到switch
与一些原语(以及Java 7中的新字符串)文字或变量声明为final
一起使用。
如果这不会引发编译错误,那么必须为那些数据类型定义||
运算符。但除非在编译时以某种方式解决,否则不允许该运算符。 (同样,这可能是Java 7中我不知道的新内容。)
如果你想做" 或"逻辑,规范模式(至少在Java的7版本中)是:
switch(type) {
case INT:
case TINYINT:
preparedStatement = setInteger(preparedStatement, value, index);
break;
case BIGINT:
case LONG:
preparedStatement =
break;
答案 4 :(得分:0)
java 7之后支持
答案 5 :(得分:0)
即使使用字符串,也不能在switch语句中使用逻辑运算符。您一次只能测试一个案例。