Reputation: 169
I'm studying switch expression, and I'd like to know how to pass control to the invoker method because "yield" just exits from the switch expression. I can't find any way to make it behave like the classic switch statement.
Is it even possible?
UPDATE: Here's a little piece of code.
public static boolean isTimeToParty(DayOfWeek day) {
boolean isParty = switch (day) {
case MONDAY -> false;
case TUESDAY -> {
yield false; //return not allowed
}
case WEDNESDAY -> false;
case THURSDAY -> false;
case FRIDAY -> false;
case SATURDAY -> true;
case SUNDAY -> true;
};
return isParty;
}
What I mean is: How to avoid assigning value to a variable and then calling return [variable_name]? I would like to return value and exit switch at the same time.
Thanks in advance
Upvotes: 2
Views: 1334
Reputation: 9384
Simply return
to the calling method. If you just want to stop processing further cases in the same switch, use break
.
This and the below example apply to the switch statement, whereas the original question was releated to the switch expression.
public static void main(String[] args) throws Exception {
switch(1) {
case 1:
System.out.println("Case one");
// no break, so case processing goes one
case 2:
System.out.println("Case two");
break; // we bail out here and do not process further cases
default:
System.out.println("Default case");
}
switch(2) {
case 2:
return;
default:
System.out.println("Default case");
}
System.out.println("This is the end - should not be printed");
}
generates output
Case one
Case two
Upvotes: 1
Reputation: 15116
As you cannot use return
or break
within the switch, it would be easier in your case to simplify with return switch ...
directly:
public static boolean isTimeToParty(DayOfWeek day) {
return switch (day) {
case SATURDAY, SUNDAY -> true;
default -> false;
};
}
Upvotes: 2