增强型交换机有什么好处?

Coh*_*ius 0 java intellij-idea switch-statement

最近,我们将代码库从 Java 8 升级到 Java 17。从那时起,IntelliJ IDEA 就会对旧的 switch-case 语句发出警告:

switch 语句可以替换为增强的“switch”

除了可读性之外,增强型开关还有哪些好处?

示例:java 8 开关:

        switch (foo) {
            case "bla": return 1;
            case "bla_bla": return 2;
        }
Run Code Online (Sandbox Code Playgroud)

接受后Switch statement can be replaced with enhanced 'switch'看起来像这样:

        switch (foo) {
            case "bla" -> { return 1; }
            case "bla_bla" -> { return 2; }
        }
Run Code Online (Sandbox Code Playgroud)

Mar*_*rit 6

IntelliJ 博客文章讨论了增强型交换机的三个好处:

\n
    \n
  1. 简洁的代码。
  2. \n
  3. 可以返回一个值。
  4. \n
  5. 无需使用break。如果没有break语句,控件不会通过开关标签,这有助于避免逻辑错误。
  6. \n
\n

在您的特定示例中,您已经从 switch 语句返回,而增强的 switch 语句可能不会提供太多功能。当旧开关使用值分配和中断时,增强型开关改进了代码。例如:

\n
int height = 0; \n    switch (size) {\n        case S:\n            height = 18;\n            // missing break (bug)\n        case M:\n            height = 20;\n            break;\n        case L:\n            height = 25;\n            break;\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

其增强为:

\n
int height = 0; \n    switch (size) {\n        case S -> height = 18;\n        case M -> height = 20;\n        case L -> height = 25;\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

但是,如果您希望不再收到此警告,可以在 IntelliJ IDEA 中将其关闭。为此,请打开首选项,然后转到编辑器 -> 检查(我使用的是版本 2023.1)。搜索(部分)警告 ( Switch statement can be replaced with enhanced \'switch\') 并取消选择它。

\n