那为什么下面这段代码中可以使用yield public class Main { public static void main(String[] args) { String fruit = "orange"; int opt = switch (fruit) { case "apple" -> 1; case "pear", "mango" -> 2; default -> { int code = fruit.hashCode(); yield code; // switch语句返回值 } }; System.out.println("opt = " + opt); } }
时间: 2024-02-10 07:28:51 浏览: 67
深入理解PHP中的static和yield关键字
抱歉,我之前的回答有误。你提供的代码是使用Java 14中的新特性——Switch表达式(Switch Expressions)。
在Java 14及以后的版本中,`yield`关键字被引入作为`switch`表达式的一部分,用于返回一个值。在这种情况下,`yield`关键字允许你在`switch`表达式中返回一个值,而不是像传统的`switch`语句中使用`return`关键字。
在你提供的代码中,当`fruit`不匹配任何已知的`case`时,会执行`default`块。在该块内部,使用`yield`关键字返回了一个值,即根据`fruit.hashCode()`的结果。
需要注意的是,这种用法只适用于Java 14及以后的版本,并且仅在`switch`表达式中使用。在传统的`switch`语句中,你仍然需要使用`return`关键字。
对于你的代码示例,在Java 14及以后的版本中,使用`yield`关键字是合法的并且可以正常工作。输出结果将是与计算得到的哈希码对应的整数值。
阅读全文