Zielony Smok - logo witryny

Wynika z JEP https://openjdk.java.net/jeps/354.

Wcześniejsze zmiany wprowadzone w Java 12 zostały omówione tutaj.

W Java 13 podstawową zmiana jest dodanie słowa słowa yield.

Jeżeli konstrukcja switch zwraca dane, wówczs można użyć słowa yield. Przykłady przedstawione w pierwszej części zachowują wartość z wyjątkiem przykładów w klasach:

SwitchExpr5.java i SwitchExpr7.java.

Klasy

SwitchExpr5.java
package switchexpr2;

public class SwitchExpr5 {
    enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}

    public static void main(String[] args) {
        Dni dzien = Dni.Nie;
        int dayNum = switch (dzien) {
            case Pon, Czw, Pia, Sob -> dzien.ordinal();
            case Wto -> {
                yield dzien.ordinal();
            }
            case Sro -> {
                yield 2;
            }
            case Nie -> {
                System.out.println("Dziś jest niedziela");
                yield dzien.ordinal();
            }
        };
        System.out.println(dayNum);
    }
}

Po uruchomieniu klasy otrzymujemy na konsoli:

Dziś jest niedziela
6

Uwagi

W przypadku Sro mozna było zastosować case Sro -> 2;.

Każdy z przypadków pojedynczych case lub gałęzi case musi zwracać wynik.

Nie ma default ponieważ wszystkie możliwości wynikające z enum Dni są wyczerpane
(użyte) w konstrukcji switch.

SwitchExpr7.java
package switchexpr2;

import java.util.*;

public class SwitchExpr7 {
    enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}

    public static void main(String[] args) {
        Dni dzien = Dni.Nie;
        String dayNum = switch (dzien) {
            case Pon, Wto, Sro, Czw, Pia -> "Dzień roboczy";
            case Sob -> "Sobota: dzień wolny od pracy";
            case Nie -> {
                Random ran = new Random();
                int dec = ran.nextInt(10);
                yield dec < 5 ? "Niedziela: Idziesz na spacer" : "Niedziela: możesz pograć w gry";
            }
        };
        System.out.println(dayNum);
    }
}

Po uruchomieniu otrzymujemy na konsoli:

Niedziela: Idziesz na spacer

Uwagi

Nie ma default ponieważ wszystkie możliwości wynikające z enum Dni
zostały użyte w konstrukcji switch.