JAVA.SWITCH.NODEFAULT

switch ステートメントにはデフォルトのラベルがありません。

脆弱性とリスク

デフォルトのラベルが存在しない場合、機能拡張により予期しない動作が発生する可能性があります。

軽減と防止

デフォルトのラベルを作成し、デフォルトの動作、つまり予期しない値が来たときの動作を明示的に記述します。

例 1

コピー
public class C03 {
    
    /* default located at first */
    public void testOK1(int num) {
        switch (num) {
        default
            break;
            
        case 1
            break;
        case 2
            break;
        
        }
        
        
    
    }
    
    /* default located at last */
    public void testOK2(int num) {
        
        switch (num) {            
        case 1
            break;
        case 2
            break;
        default
            break;
        }
    }
    
    /* no default */
    public void testNG2(int num) {
        switch (num) {            
        case 1
            break;
        case 2
            break;
        }
        
    }

}