Thursday, 4 May 2023

Switch Expression in Java 12

Java 12, JEP 325: Switch Expressions enhanced the traditional switch statement to support the following new features:

  • Multiple case labels
  • Switch expression returning value via break (replaced with yield in Java 13)
  • Switch expression returning value via label rules (arrow)
//Traditional switch statement
public String traditionalSwitch(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;
}

//Now, this switch is an expression (returning something), also called value breaks.
public String newSwitch(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;
}

//We also can return value via arrow or label rules.
public String newSwitchWithReturn(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;
}

//In Java 13, we can use yield to return a value.
private static int newSwitchWithYield(String mode) {
int result = switch (mode) {
case "a", "b":
yield 1;
case "c":
yield 2;
case "d", "e", "f":
// do something here...
System.out.println("Supports multi line block!");
yield 3;
default:
yield -1;
};
return result;
}

No comments:

Post a Comment