2011-11-04 234 views
-3

我寫了這個Java的編譯錯誤switch語句

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()); 
    } 
} 

不過,這並不編譯。它說它缺少一個:。問題是什麼?我試圖把「:」放在每一處。

+7

情況下READ_UNCOMMITTED: – ptomli

回答

4

你的問題是,你有

case READ_UNCOMMITTED; 

用分號。你需要一個冒號

case READ_UNCOMMITTED: 
+0

謝謝:)我還必須得太多已經看過,因爲我看不出:) – uthen

1

Java中的switch語句是這樣:

switch(thingy){ 
    case CASE1: 
     ... 
    break; 
    ... 
} 
1

case READ_UNCOMMITTED;需要的線路改爲case READ_UNCOMMITTED:。注意冒號而不是分號。

3

我敢肯定,編譯器也給你一個行號:

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()); 
    } 

} 
0

如果只是只有一個開關內的條款,你並不需要一個開關 - 您可以簡單地用一個「如果」聲明,這將使代碼更清潔。

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()); 
    } 
} 
+0

謝謝:)我不知道 – uthen