Many existing switch statements are essentially simulations of switch expressions, where each arm either assigns to a common target variable or returns a value. Expressing this as a statement is roundabout, repetitive, and error-prone.
Java 14 added support for switch expressions, which provide more succinct and less error-prone version of switch.
void countLetters(String day) {
int numLetters;
switch (day) {
case "Monday", "Friday", "Sunday":
numLetters = 6;
break;
case "Tuesday":
numLetters = 7;
break;
case "Thursday", "Saturday":
numLetters = 8;
break;
case "Wednesday":
numLetters = 9;
break;
default:
throw new IllegalArgumentException("Invalid day: " + day);
}
System.out.println(numLetters);
}
Day dayOfWeek(String text) {
switch (text) {
case "Monday":
return Day.MONDAY;
case "Tuesday":
return Day.TUESDAY;
case "Wednesday":
return Day.WEDNESDAY;
case "Thursday":
return Day.THURSDAY;
case "Friday":
return Day.FRIDAY;
case "Saturday":
return Day.SATURDAY;
case "Sunday":
return Day.SUNDAY;
default:
throw new IllegalArgumentException("Invalid day: " + text);
}
}
void countLetters(String day) {
int numLetters = switch (day) {
case "Monday", "Friday", "Sunday" -> 6;
case "Tuesday" -> 7;
case "Thursday", "Saturday" -> 8;
case "Wednesday" -> 9;
default -> throw new IllegalArgumentException("Invalid day: " + day);
};
System.out.println(numLetters);
}
Day dayOfWeek(String text) {
return switch (text) {
case "Monday" -> Day.MONDAY;
case "Tuesday" -> Day.TUESDAY;
case "Wednesday" -> Day.WEDNESDAY;
case "Thursday" -> Day.THURSDAY;
case "Friday" -> Day.FRIDAY;
case "Saturday" -> Day.SATURDAY;
case "Sunday" -> Day.SUNDAY;
default -> throw new IllegalArgumentException("Invalid day: " + text);
};
}