JAVA 14 新特性 - switch表达式
/ dev
现在的Java版本号刷的和Chrome一样快,在最新的14版本中加入了switch表达式,和以前使用的switch语句不同,switch表达式带来的不仅仅是编码上的流畅,同时精简了switch语句的使用方式,并且是兼容以前的switch语句。
以前的switch语句在分支结束的时候往往需要我们手动的进行break,否则switch会一直进行下去直到switch语句结束,这很容易造成一些难以排查的bug。switch语句使用冒号来作为分支代码块的的开始,而switch表达式提供了新的流程切换方式:->
符号右边的代码执行完成之后会自动结束整个switch语句。->
右边可以是表达式,代码块或是抛出异常。
由于变成了表达式,现在switch可以用来进行赋值,比如:
1 |
|
虽然switch表达式的出现在一些流程分支上简化了不少编码,但是需要注意以下几点:
- 使用时必须要覆盖到所有可能的case分支(包括default);
- 每个分支都必须要yield一个值或者抛出异常;
- switch表达式无法使用break,return,continue来跳出;
枚举在使用switch表达式的时候只需要覆盖到所有的枚举值即可,默认的default分支编译期会自动处理加入到表达式中。
上面的要点提到了 yield
,它并不是一个关键字,和 var
一样,都是被严格限制了的类型名。yield
可理解为让,或者是返回。
yield语句
上面的switch表达式是比较简单的yield语句,看下面的代码:
1 |
|
因为switch表达式是兼容以前的switch语句,所以也可以这么写:
1 |
|
查看使用switch表达式和switch语句所得到的class文件,发现基本一样,说明switch表达式的实现仍然是Java的语法糖,都是编译器在编译的时候进行处理的。
switch表达式的出现可以看到Java在提高使用者编码效率上还是在不停的努力,期待可以看到更多的新特性来提升编码效率和体验。
本站所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!