case
标签的 switch
语句和表达式,并建议将它们重写为 if
和 else if
语句。
示例 (minimum branches == 3):
switch (expression) {
case "foo" -> foo();
case "bar" -> bar();
}
在应用快速修复后:
if ("foo".equals(expression)) {
foo();
} else if ("bar".equals(expression)) {
bar();
}
不报告详尽的 switch 表达式 (Java 14+) 或不带 'default' 分支的模式 switch 语句(Java 17 预览版)。
这是因为当 switch
被转换为 if
后,编译时详尽性检查将丢失(可能是不希望发生的结果)。
配置检查:
使用最小分支数 字段指定 case
标签的最小预期数量。
使用不报告模式 switch 语句选项可避免报告具有模式分支的 switch 语句和表达式。 例如:
String result = switch(obj) {
case String str -> str.trim();
default -> "none";
};
即使只有一个模式分支,也应该保留 switch,而不是使用 instanceof
语句。