In Java, a switch statement generally allows the application to have multiple possible execution paths based on the value of a given expression in runtime. The evaluated expression is called the selector expression which must be of type char, byte, short, int, Character, Byte, Short, Integer, String, or an enum.
case L ->
” which allows multiple constants per case.In Java 14, switch expressions are a standard feature. In Java 13 and Java 12, it was added as a preview feature.
yield
to return value in place of old return
keyword.(->)
operator, we can skip yield
keyword as shown in isWeekDayV1_1().(:)
operator, we need to use yield
keyword as shown in isWeekDayV1_2().yield
keyword as shown in isWeekDayV2().enum
, we can skip the default case. If there is any missing value not handled in cases, compiler will complain. In all other expression types (int, strings etc), we must provide default
case as well.public class SwitchExpressions
{
public static void main(String[] argv)
{
System.out.println(isWeekDayV1_1(Day.MON)); //true
System.out.println(isWeekDayV1_2(Day.MON)); //true
System.out.println(isWeekDayV2(Day.MON)); //true
}
//1 - Return value directly
enum Day {
MON, TUE, WED, THUR, FRI, SAT, SUN
};
public static Boolean isWeekDayV1_1 (Day day)
{
Boolean result = switch(day) {
case MON, TUE, WED, THUR, FRI -> true;
case SAT, SUN -> false;
};
return result;
}
public static Boolean isWeekDayV1_2 (Day day)
{
Boolean result = switch(day) {
case MON, TUE, WED, THUR, FRI : yield true;
case SAT, SUN : yield false;
};
return result;
}
//2 - Multiple statements in case block
public static Boolean isWeekDayV2 (Day day)
{
Boolean result = switch(day) {
case MON, TUE, WED, THUR, FRI ->
{
System.out.println("It is WeekDay");
yield true;
}
case SAT, SUN ->
{
System.out.println("It is Weekend");
yield false;
}
};
return result;
}
}
2. Difference between yield
and return
return
statement returns control to the invoker of a method or constructor.switch
expression to produce a specified value.SwitchExpression:
YieldStatement:
yield Expression;
In the above pseudo-code:
SwitchExpression
tries to find a correct YieldStatement
to transfer control to innermost enclosing yield
target.SwitchExpression
terminates normally and the value of the Expression
becomes the value of the SwitchExpression
.Expression
completes abruptly for some reason, then the yield
statement completes abruptly for same reason.Happy Learning !!
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4