最近,我们将代码库从 Java 8 升级到 Java 17。从那时起,IntelliJ IDEA 就旧的 switch-case 语句发出警告:
Switch 语句可以替换为增强的“switch”
除了可读性之外,增强型开关还有哪些好处?
示例:java 8 开关:
switch (foo) {
case "bla": return 1;
case "bla_bla": return 2;
}
接受后
Switch statement can be replaced with enhanced 'switch'
看起来像这样:
switch (foo) {
case "bla" -> { return 1; }
case "bla_bla" -> { return 2; }
}
IntelliJ 博文谈论了增强型交换机的三个好处:
break
。如果没有break语句,控件不会落入开关标签,这有助于避免逻辑错误。在您的特定示例中,您已经从 switch 语句返回,增强的 switch 语句可能不会提供太多功能。当旧开关使用值分配和中断时,增强型开关改进了代码。例如:
int height = 0;
switch (size) {
case S:
height = 18;
// missing break (bug)
case M:
height = 20;
break;
case L:
height = 25;
break;
}
增强为:
int height = 0;
switch (size) {
case S -> height = 18;
case M -> height = 20;
case L -> height = 25;
}
但是,如果您希望不再收到此警告,可以在 IntelliJ IDEA 中将其关闭。为此,请打开首选项,然后转到编辑器 -> 检查(我使用的是版本 2023.1)。搜索(部分)警告 (
Switch statement can be replaced with enhanced 'switch'
) 并取消选择它。