Ява 12, JEP 325: Выражения переключения улучшили традиционную инструкцию переключения
для поддержки следующих новых функций:
- Несколько ярлыков обращений
- Выражение переключения, возвращающее значение через разрыв (заменено на
выход
в Java 13 выражений переключения ) - Переключить выражение, возвращающее значение с помощью правил меток (стрелка)
P.S Выражения переключения являются функцией предварительного просмотра и по умолчанию отключены.
Традиционный переключатель
пример.
package com.mkyong.java12; public class JEP325 { public static void main(String[] args) { System.out.println(getTextBefore12(1)); System.out.println(getTextBefore12(3)); System.out.println(getTextBefore12(6)); System.out.println(getTextBefore12(10)); } // Traditional switch statement private static String getTextBefore12(int number) { String result = ""; switch (number) { case 1: case 2: result = "one or two"; break; case 3: result = "three"; break; case 4: case 5: case 6: result = "four or five or six"; break; default: result = "unknown"; }; return result; } }
Выход
one or two three four or five or six unknown
1. Несколько ярлыков обращений
Теперь мы можем объявить несколько случаев с метками, разделенными запятыми.
private static String getTextMultipleLabels(int number) { String result = ""; switch (number) { case 1, 2: result = "one or two"; break; case 3: result = "three"; break; case 4, 5, 6: result = "four or five or six"; break; default: result = "unknown"; }; return result; }
2. Возвращаемое значение через разрыв
Теперь этот переключатель
является выражением (возвращающим что-то), также называемым разрывами значений.
private static String getTextViaBreak(int number) { String result = switch (number) { case 1: case 2: break "one or two"; case 3: break "three"; case 4: case 5: case 6: break "four or five or six"; default: break "unknown"; }; return result; }
4. Возвращаемое значение с помощью стрелки
Мы также можем возвращать значение с помощью правил со стрелками или метками.
private static String getTextViaArrow(int number) { String result = switch (number) { case 1, 2 -> "one or two"; case 3 -> "three"; case 4, 5, 6 -> "four or five or six"; default -> "unknown"; }; return result; }
5. Включить функции предварительного просмотра
5.1 Обычная javac
компиляция вызовет следующие ошибки:
$ javac JEP325.java JEP325.java:39: error: multiple case labels are a preview feature and are disabled by default. case 1, 2: ^ (use --enable-preview to enable multiple case labels) JEP325.java:56: error: switch expressions are a preview feature and are disabled by default. String result = switch (number) { ^ (use --enable-preview to enable switch expressions) JEP325.java:75: error: switch rules are a preview feature and are disabled by default. case 1, 2 -> "one or two"; ^ (use --enable-preview to enable switch rules) 3 errors
5.2 Нам нужно включить функцию предварительного просмотра вручную:
javac --enable-preview --release 12 Example.java java --enable-preview Example
Рекомендации
- Java 13 – Переключение выражений
- Проект OpenJDK 12
- JEP 325: Переключение выражений
- JEP 305: Сопоставление шаблонов, например
- ДЖЕП-354: Переключение выражений (Предварительный просмотр)
- История версий Java
Оригинал: “https://mkyong.com/java/java-12-switch-expressions/”