为什么JDK8的switch语法会导致应该执行的代码却没有执行
时间: 2024-03-22 20:36:53 浏览: 36
JDK8的switch语句引入了新的语法,支持使用lambda表达式和方法引用等特性,但这也带来了一些问题。在使用lambda表达式或方法引用的时候,如果在case语句中使用了return或throw语句,那么这些语句并不能像普通的switch语句一样终止程序的执行,而是会跳过后面的代码,直接执行lambda表达式或方法引用中的代码,这可能导致出现应该执行的代码却没有执行的情况。
例如,下面的代码中,当x等于1时,应该执行的代码是在case 1中的,但由于在lambda表达式中出现了return语句,导致后面的代码没有执行。
```
switch (x) {
case 1:
return;
default:
System.out.println("default");
break;
}
```
为了避免这种情况的出现,应该尽量避免在lambda表达式或方法引用中使用return或throw语句,或者使用普通的switch语句来代替lambda表达式或方法引用。
阅读全文