A switch expression is like a normal expression, except that it will be evaluated to a value. This is an improvement of the switch statement. In a switch expression:
class HelloWorld {public static void main( String args[] ) {String browserSupport;String browser = "Safari";switch (browser) {case "IE":browserSupport = "Un-Supported Browser";break;case "Chrome":case "Safari":case "Opera":browserSupport = "Supported Browser";break;default:browserSupport = "Unknown Browser";}System.out.println(browserSupport);}}
In the above code, we have used a switch statement to check the browser support.
Let’s write the above code with switch expressions.
yield
to return valuepublic class HelloWorld {
public static void main(String[] args) {
String browser = "Safari";
String browserSupport = switch (browser) {
case "IE":
yield "Un-Supported Browser";
case "Chrome", "Safari", "Opera":
yield "Supported Browser";
default:
yield "Unknown Browser";
}
System.out.println(browserSupport);
}
}
In the above example, we have replaced the multiple case label in single case label.
case "Chrome":
case "Safari":
case "Opera":
is replaced by
case "Chrome", "Safari", "Opera":
We have also used yield
to return a value from the switch expression.
public class HelloWorld {
public static void main(String[] args) {
String browser = "Safari";
String browserSupport = switch (browser) {
case "IE" -> "Un-Supported Browser";
case "Chrome", "Safari", "Opera" -> "Supported Browser";
default -> "Unknown Browser";
}
System.out.println(browserSupport);
}
}
In the above code, we have replaced the yield
statement with an arrow label (->
). The colon (:
) at the end of the case label is also removed. By adding a switch expression we are able to make the code shorter and more readable.
When using the switch expression, it must either complete normally, with a value, or complete abruptly by throwing an exception.
String browser = "Opera";
String browserSupport = switch (browser) {
case "IE" -> "Un-Supported Browser";
default -> System.out.println("Compilation error");
}
You can install Java 14 on your machine to test the switch expression. Download Java 14 here.
When we create a switch expression that doesn’t yield a value (like in the code above), it will throw an error as //Group doesn't contain a yield statement
.
You can read more about switch expressions on the official page:
. JEP 361- Java 14 https://openjdk.org/jeps/361