Ошибка компиляции Java для оператора switch - PullRequest
0 голосов
/ 04 ноября 2011

Я написал это

public static void setIsolationLevel(Isolev level) {
    try{
        switch(level){
            case READ_UNCOMMITTED;
            conn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
            break;
        }
    }catch (SQLException e){
        throw new ServiceException(e.getMessage());
    }
}

Но это не компилируется. Он говорит, что отсутствует :. В чем проблема? Я пытался поставить ":" везде.

Ответы [ 5 ]

4 голосов
/ 04 ноября 2011

Ваша проблема в том, что у вас есть

case READ_UNCOMMITTED;

с точкой с запятой.Вам нужно двоеточие

case READ_UNCOMMITTED:
3 голосов
/ 04 ноября 2011

Я уверен, что компилятор также дает вам номер строки:

public static void setIsolationLevel(Isolev level) {
    try{
        switch(level){
        case READ_UNCOMMITTED: // <-------- here, replace ; with :
           conn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
           break;
        }
    }catch (SQLException e){
        throw new ServiceException(e.getMessage());
    }

}
1 голос
/ 04 ноября 2011

Строка case READ_UNCOMMITTED; должна быть изменена на case READ_UNCOMMITTED:.Обратите внимание на двоеточие вместо точки с запятой.

1 голос
/ 04 ноября 2011

Оператор switch в Java выглядит следующим образом:

switch(thingy){
    case CASE1: 
       ...
    break;
    ...
}
0 голосов
/ 04 ноября 2011

Если в переключателе есть только одно предложение, вам не нужен переключатель - вы можете просто использовать оператор 'if', который сделает код чище.

public static void setIsolationLevel(Isolev level) {
    try{
        if(READ_UNCOMMITTED.equals(level)){
            conn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
        }
    }catch (SQLException e){
        throw new ServiceException(e.getMessage());
    }
}
...