Pages

Monday, March 16, 2020

Java Switch Expressions Examples (+Java 13, 12 Vs All Java Older Versions Switch Programs)

1. Introduction


In to days article, We'll learn what is new Java 13 switch expression with example programs. In Java 13, the JEP 354: Switch Expressions extends the previous Java 12 Switch Expressions by adding a new yield keyword to return a value from switch expression. This makes the code so clear and more readable now.

This feature is part of preview features and disabled by default. This needs to be enabled for usage.

Java Switch Expressions Examples (+Java 13, 12 Vs All Java Older Versions Switch Programs)




2. Traditional Switch


This is the basic switch statement that will work in all java versions.

Java switch statement examples

private static int getValueBefore12(String mode) {
    int output;
    
    switch (mode) {
        case "A":
        case "B":
            output = 1;
            break;
        case "C":
            output = 2;
            break;
        case "D":
        case "E":
        case "F":
            output = 3;
            break;
        default:
            output = -1;
    };
    
    return output;
}

3. No Value Breaks Example


Value breaks are replaced by Java 13 'yield' statements. But this is valid in JDK 12.

private static int getValueViaTraditionalBreak(String mode) {

    int output = switch (mode) {
        case "A":
        case "B":
            break 1;
        case "C":
            break 2;
        case "D":
        case "E":
        case "F":
            break 3;
        default:
            break -1;
    };
    
    return output;
}

This code no longer will be compiled in java 13 version because value breaks are removed.

4. Java 12 Comma Separated Labels Example


 private static int getValueFromJava12MultipleLabels(String mode) {
    int output;
    switch (mode) {
        case "A", "B":
            output = 1;
            break;
        case "C":
            output = 2;
            break;
        case "D", "E", "F":
            output = 3;
            break;
        default:
            output = -1;
    };
    
    return output;
}

5. Java 12 - Switch Expression Arrow Example


We can use an arrow symbol to return a value via label rules (arrow) and also works with multiple rules. Let us take a look at the below example.


private static int getValueViaArrowJava12(String mode) {
    int output = switch (mode) {
        case "A", "B" -> 1;
        case "C" -> 2;
        case "D", "E", "F" -> 3;
        default -> -1;
    };
    return output;
}

6. Java 13 - yield in Switch Example


JDK 13 introduced a new way to declare a value to be returned with "yield" keyword.

Java 13 yield example:


 private static int getValueViaYieldInJava13(String mode) {
     int output = switch (mode) {
         case "a", "b":
             yield 1;
         case "c":
             yield 2;
         case "d", "e", "f":
             yield 3;
         default:
             yield -1;
     };
     
     return output;
 }

7. Enabling Java 13 Preview Features


If you run the Java 13 yield example program directly then you will get the following compile-time errors.

D:\test>javac Java13SwitchExample.java
Java13SwitchExample.java:39: error: multiple case labels are a preview feature and are disabled by default.
            case "a", "b":
                      ^
  (use --enable-preview to enable multiple case labels)
Java13SwitchExample.java:76: error: switch expressions are a preview feature and are disabled by default.
        int result = switch (mode) {
                     ^
  (use --enable-preview to enable switch expressions)
Java13SwitchExample.java:77: error: switch rules are a preview feature and are disabled by default.
            case "a", "b" -> 1;
                          ^
  (use --enable-preview to enable switch rules)

We need to explicitly enable the preview feature using the following commands.

javac --enable-preview --release 13 Java13SwitchExample.java
java --enable-preview Java13SwitchExample


8. Conclusion


In this article, We've learned what are the various versions of Switch statement or expression as part of the JDK 12, JDK 13 and older versions.

No comments:

Post a Comment

Please do not add any spam links in the comments section.