switch
语句中的“贯穿”。
当 case
标签后面的一系列可执行语句不能保证在下一个 case
标签前转移控制权时,就会发生贯穿。 例如,如果分支缺少 break
语句,就可能发生这种情况。
在这种情况下,即便 switch
表达式不等于被贯穿标签之值,控制权也会贯穿到 switch
标签后面的语句。 虽然偶尔是有意为之,但这种结构令人混淆,并且通常由拼写错误所致。
该检查将忽略任何使用与正则表达式模式 (?i)falls?\s*thro?u
相匹配的文本注释的贯穿。
通过修复可以向可能贯穿到下一个分支的分支添加 break
。
示例:
switch(x) {
case (4):
if (condition) {
System.out.println("3");
// 此处无 break
} else {
break;
}
case (6):
System.out.println("4");
}
在应用快速修复后:
switch(x) {
case (4):
if (condition) {
System.out.println("3");
} else {
break;
}
break;
case (6):
System.out.println("4");
}