谈谈JDK13中的yield关键字

Posted YOOTK李兴华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈JDK13中的yield关键字相关的知识,希望对你有一定的参考价值。

20190923日的时候Java更新了现有的JDK,推出了JDK的第13个开发版本(JDK13),在JDK13之中提供了一个新的yield关键字,于是小李老师给大家整理了一张表格,把Java中存在的关键字给大家列了出来。




那么一定会有同学问了,老师这个yield关键字有什么用处?为什么需要提供这样的关键字呢?


 

谈谈JDK13中的yield关键字



为了给大家及时普及最新的编程技术,我们在201911月的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简化了。

谈谈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进行数据返回,并且直接进行变量的赋值操作。

谈谈JDK13中的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语法会更加的繁琐了。

谈谈JDK13中的yield关键字




但是大家思考过为什么Java13会推出yield关键字呢?实际上小李老师认真思考了下,最终得出的结论是有可能这是向Python语言学习的,而目的是为了在以后扩展“多协程”编程技术(现在仅仅是猜测)。


 

谈谈JDK13中的yield关键字



 

要是不理解我的推测依据,要不大家先学学小李老师的Python课程?

谈谈JDK13中的yield关键字


如果对互联网技术感兴趣的读者欢迎注册为沐言优拓(www.yootk.com)的会员,一起和小李老师研究技术,我们将不断的推出各种技术的视频与图书资料帮助大家提升技能。

谈谈JDK13中的yield关键字




谈谈JDK13中的yield关键字





 



 

 


 


以上是关于谈谈JDK13中的yield关键字的主要内容,如果未能解决你的问题,请参考以下文章

python_递归_协程函数(yield关键字)_匿名函数_模块

.NET中的yield关键字

13生成器函数

python的关键字yield有啥作用

python 中的“yield”关键字是如何真正起作用的,尤其是当它带有递归时?

60简述 yield和yield from关键字。