0

因此,条件中的所有变量都是静态字符串。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;
         }
4

6 回答 6

4

首先,switchJava 7+ 支持字符串语句,但 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.
于 2013-07-16T00:00:37.923 回答
2

Java 7示例

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。我强烈建议不要这样做。

于 2013-07-15T23:59:52.040 回答
1

假设您使用的是 Java SE 7(或更高版本)并且常量是static final Strings,那么语法不是 Java。

         case INT: case TINYINT:
于 2013-07-15T23:59:49.393 回答
1

这个表达式的计算结果是什么?

INT || TINYINT

INT和的数据类型是什么TINYINT

我只见过switch与声明为final.

如果这没有引发编译错误,则||必须为这些数据类型定义运算符。但是除非在编译时以某种方式解决了这个问题,否则将不允许该运算符。(同样,这可能是我不知道的 Java 7 中的新内容。)


如果您尝试执行“”逻辑,则规范模式(至少在 Java 的 7 之前版本中)是:

    switch(type) {
        case INT:
        case TINYINT:
             preparedStatement = setInteger(preparedStatement, value, index);  
             break;
        case BIGINT:
        case LONG:
             preparedStatement = 
             break;
于 2013-07-16T00:10:12.857 回答
0

它在 java 7 及之后受支持

于 2013-07-15T23:57:28.390 回答
0

你不能在 switch 语句中使用逻辑运算符,即使是字符串。您一次只能测试一个案例。

于 2013-07-15T23:59:27.523 回答