Рубрики
Без рубрики

Java 12 – Переключение выражений

– Java 12 – Переключать выражения

Ява 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

Рекомендации

Оригинал: “https://mkyong.com/java/java-12-switch-expressions/”