旅游网站建设报告,关键词优化排名价格,惠州seo排名外包,小型项目外包网站lambda表达式语法从Java 14开始#xff0c; switch表达式具有其他Lambda式 #xff08; case ... - labels #xff09;语法#xff0c;它不仅可以用作语句#xff0c;还可以用作计算为单个值的表达式。 对于新的类似Lambda的语法#xff0c;如果标签匹配#xff0… lambda表达式语法 从Java 14开始 switch表达式具有其他Lambda式 case ... - labels 语法它不仅可以用作语句还可以用作计算为单个值的表达式。 对于新的类似Lambda的语法如果标签匹配则仅执行箭头右侧的表达式或语句否则仅执行箭头右侧的表达式或语句。 没有跌倒 var result switch (str) { case A - 1 ; case B - 2 ; case C - 3 ; case D - 4 ; default - throw new IllegalStateException( Unexpected value: str); }; 上面是switch作为返回单个整数值的表达式的示例。 可以在switch中将相同的语法用作语句 int result; switch (str) { case A - result 1 ; case B - result 2 ; case C - { result 3 ; System.out.println( 3! ); } default - { System.err.println( Unexpected value: str); result - 1 ; } } yield 在case需要块的case yield可用于从中返回值 var result switch (str) { case A - 1 ; case B - 2 ; case C - { System.out.println( 3! ); yield 3 ; // return } default - throw new IllegalStateException( Unexpected value: str); }; 每种 也可以使用case常量用逗号分隔进一步简化switch的用法 var result switch (str) { case A - 1 ; case B - 2 ; case C - 3 ; case D , E , F - 4 ; default - 5 ; }; 最后的例子 为了演示新的switch语法我创建了这个微型计算器 double calculate(String operator, double x, double y) { return switch (operator) { case - x y; case - - x - y; case * - x * y; case / - { if (y 0 ) { throw new IllegalArgumentException( Cant divide by 0 ); } yield x / y; } default - throw new IllegalArgumentException( Unknown operator %s .formatted(operator)); }; } 源代码 可以在Github上找到本文的源代码 https : //github.com/kolorobot/java9-and-beyond 参考资料 https://openjdk.java.net/jeps/361 翻译自: https://www.javacodegeeks.com/2020/05/switch-as-an-expression-in-java-with-lambda-like-syntax.htmllambda表达式语法