无涯教程: Java 14 – Switch表达式介绍
switch语句允许应用程序基于运行时中给定表达式的值具有多个可能的执行路径。
评估后的表达式称为选择器表达式,其类型必须为 char,byte,short,int,Character,Byte,Short,Integer,String或enum
如果在某些情况下未处理任何遗漏的值,编译器将报错。其他表达式类型(int,string等),我们还必须提供 default
大小写。
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 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; } }
Yield与Return
return 语句将控制权返回给方法或构造函数的调用者。 yield 语句通过使封闭的 switch
表达式产生指定值来转移控制权。
SwitchExpression: Yield Statement: yield Expression;
SwitchExpression
试图找到正确的YieldStatement
,以将控制权转移到最里面封闭的yield
目标。SwitchExpression
正常终止,并且Expression
的值成为SwitchExpression
的值。- 如果出于某种原因突然完成了对
Expression
的求值,那么出于相同的原因,yield
语句就突然完成了。
来源:https://www.learnfk.com/article-java14-switch-expressions
Hi LearnFk.com