谈谈JDK13中的yield关键字
Posted YOOTK李兴华
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈JDK13中的yield关键字相关的知识,希望对你有一定的参考价值。
在2019年09月23日的时候Java更新了现有的JDK,推出了JDK的第13个开发版本(JDK13),在JDK13之中提供了一个新的yield关键字,于是小李老师给大家整理了一张表格,把Java中存在的关键字给大家列了出来。
那么一定会有同学问了,老师这个yield关键字有什么用处?为什么需要提供这样的关键字呢?
为了给大家及时普及最新的编程技术,我们在2019年11月的B站直播讲解的时候为同学们分析了这个新关键字的作用。实际上yield给了我们一种局部数据返回的功能,同时这个关键字现阶段可以结合switch语句同时使用,而在没有yield关键字之前基本上我们会编写如下的代码:
范例:通过switch判断后赋值
publicclass YootkDemo { publicstaticvoid main(String args[]) { String data = "one" ; // 定义字符串 intresult = 0 ; // 接收数据的返回值 switch (data) { // switch进行字符串匹配 case"one": // 匹配数据 result = 1 ; // 为result重新赋值 break ; case"two": // 匹配数据 result = 2 ; // 为result重新赋值 break ; default: // 匹配数据 result = -1 ; // 为result重新赋值 break ; } System.out.println(result) ; } } |
|
程序执行结果: |
1 |
在以往的开发过程之中我们必须在switch语句之外定义一个变量,随后根据switch的判断结果来进行该变量的修改,但是从JDK13开始,这样的结构就可以通过yield简化了。
范例:使用yield简化处理
publicclass YootkDemo { publicstaticvoid main(String args[]) { String data = "one" ; int result = switch (data) { // 要求直接接收switch返回结果 case"one" : yield 1 ; case"two" : yield 2 ; default : { yield -1 ; // 局部返回 } }; System.out.println(result) ; } } |
|
程序执行结果: |
1 |
大家可以发现,此时的操作可以直接在switch里面结合yield进行数据返回,并且直接进行变量的赋值操作。
不过依然还是会有人觉得以上的写法过于繁琐了,于是Java又针对于这样的操作进行了更加简化的设计(把yield都简化了)。
范例:通过yield简化操作
publicclass YootkDemo { publicstaticvoid main(String args[]) { String data = "one" ; int result = switch (data) { case"one" -> 1 ; case"two" -> 2 ; default -> -1 ; } ; System.out.println(result) ; } } |
|
程序执行结果: |
1 |
突然发现,原来最终连yield自己都可能被简化掉,感觉瞬间觉得未来的Java语法会更加的繁琐了。
但是大家思考过为什么Java13会推出yield关键字呢?实际上小李老师认真思考了下,最终得出的结论是有可能这是向Python语言学习的,而目的是为了在以后扩展“多协程”编程技术(现在仅仅是猜测)。
要是不理解我的推测依据,要不大家先学学小李老师的Python课程?
如果对互联网技术感兴趣的读者欢迎注册为沐言优拓(www.yootk.com)的会员,一起和小李老师研究技术,我们将不断的推出各种技术的视频与图书资料帮助大家提升技能。
以上是关于谈谈JDK13中的yield关键字的主要内容,如果未能解决你的问题,请参考以下文章
python_递归_协程函数(yield关键字)_匿名函数_模块