Wynika z https://openjdk.java.net/jeps/325
Szczegóły można znaleźć tutaj.
Instrukcja switch
została rozszerzona i może być używana zarówno jako instrukcja jak i wyrażenie.
Rozszerzenie jest określone jako preview, czyli cecha eksperymentalna, która może zostać w przyszłości utrwalona, zmieniona albo usunięta.
Aby móc użyć cechy preview należy użyć specjalnej składni polecenia javac
(przy używaniu linii poleceń) albo udzielić jawnej zgody w IDE.
Więcej o klasycznej instrukcji switch
Klasy
break
działa jak return
.
We wszystkich niżej przedstawionych klasach default
jest bezużyteczne, ze względu na fakt, że wyrażenie musi być typu enum
, a w wyliczeniu jest tylko 7 dni, a zatem default
występuje tutaj tylko dla przykładu.
- Klasa
SwitchExpr
1 – klasycznyswitch
- Klasa
SwitchExpr2
– użycie->
zamiast:
- Klasa
SwitchExpr3
– grupowanie etykietcase
- Klasa
SwitchExpr4
– klasyczne użycie zmiennej - Klasa
SwitchExpr5
–switch
zwracającyint
(break
1) - Klasa
SwitchExpr6
–switch
zwracającyString
- Klasa
SwitchExpr7
–switch
zwracającyString
(break a
)
Klasa SwitchExpr1
package swichexpr; public class SwitchExpr1 { enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}; public static void main(String[] args) { Dni dzien = Dni.Wto; switch (dzien) { case Pon: System.out.println(dzien.ordinal()); break; case Wto: System.out.println(dzien.ordinal()); break; case Sro: System.out.println(dzien.ordinal()); break; case Czw: System.out.println(dzien.ordinal()); break; case Pia: System.out.println(dzien.ordinal()); break; case Sob: System.out.println(dzien.ordinal()); break; case Nie: System.out.println(dzien.ordinal()); break; default: System.out.println("Nie ma takiego dnia"); } } }
Klasa SwitchExpr2
package swichexpr; public class SwitchExpr2 { enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}; public static void main(String[] args) { Dni dzien = Dni.Wto; switch (dzien) { case Pon -> System.out.println(dzien.ordinal()); case Wto -> System.out.println(dzien.ordinal()); case Sro -> System.out.println(dzien.ordinal()); case Czw -> System.out.println(dzien.ordinal()); case Pia -> System.out.println(dzien.ordinal()); case Sob -> System.out.println(dzien.ordinal()); case Nie -> System.out.println(dzien.ordinal()); default -> System.out.println("Nie ma takiego dnia"); } } }
Klasa SwitchExpr3
package swichexpr; public class SwitchExpr3 { enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}; public static void main(String[] args) { Dni dzien = Dni.Wto; switch (dzien) { case Pon, Wto, Sro, Czw, Pia -> System.out.println("Dzień roboczy"); case Sob, Nie -> System.out.println("Dzeń wolny od pracy"); default -> System.out.println("Nie ma takiego dnia"); } } }
Klasa SwitchExpr4
package swichexpr; public class SwitchExpr4 { enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}; public static void main(String[] args) { Dni dzien = Dni.Wto; int dayNum = -1; switch (dzien) { case Pon: dayNum = dzien.ordinal(); break; case Wto: dayNum = dzien.ordinal(); break; case Sro: dayNum = dzien.ordinal(); break; case Czw: dayNum = dzien.ordinal(); break; case Pia: dayNum = dzien.ordinal(); break; case Sob: dayNum = dzien.ordinal(); break; case Nie: dayNum = dzien.ordinal(); break; default: dayNum = 7; } System.out.println(dayNum); } }
Klasa SwitchExpr5
package swichexpr; public class SwitchExpr5 { enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}; public static void main(String[] args) { Dni dzien = Dni.Wto; int dayNum = switch (dzien) { case Pon -> dzien.ordinal(); case Wto -> { break 1//zwraca 1; } case Sro -> 3//zwraca 3; case Czw -> dzien.ordinal(); case Pia -> dzien.ordinal(); case Sob -> dzien.ordinal(); case Nie -> dzien.ordinal(); default -> 7//zwraca 7; }; System.out.println(dayNum); } }
Klasa SwitchExpr6
package swichexpr; public class SwitchExpr6 { enum Dni {Pon, Wto, Sro, Czw, Pia, Sob, Nie}; public static void main(String[] args) { Dni dzien = Dni.Wto; String dayNum = switch (dzien) { case Pon, Wto, Sro, Czw, Pia -> "Dzień roboczy"; case Sob, Nie -> "Dzień wolny od pracy"; default -> "Nie ma takiego dnia"; }; System.out.println(dayNum); } }
Klasa SwitchExpr7
package swichexpr; 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); String a = dec < 5 ? "Niedziela: Idziesz na spacer" : "Niedziela: możesz pograć w gry"; break a; } default -> "Nie ma takiego dnia"; }; System.out.println(dayNum); } }