Java 13中新的关键字“ yield”是什么意思?

Java 13中新的关键字“ yield”是什么意思?,第1张

Java 13中新的关键字“ yield”是什么意思? 问答环节

如何使用?

  1. 需要完整块时,带有箭头标签:

    int value = switch (greeting) {case "hi" -> {    System.out.println("I am not just yielding!");    yield 1;}case "hello" -> {    System.out.println("Me too.");    yield 2;}default -> {    System.out.println("OK");    yield -1;}

    };

  2. 使用传统积木:

    int value = switch (greeting) {case "hi":    System.out.println("I am not just yielding!");    yield 1;case "hello":    System.out.println("Me too.");    yield 2;default:    System.out.println("OK");    yield -1;

    };

默认收益有什么区别?

一条

return
语句控制权返回给 方法
(第8.4节,第§15.12节)或
构造函数
(第8.8节和第15.9节)
的调用者, 而一条
yield
语句则通过 使一个封闭的
switch
表达式
产生一个指定值来转移控制权。


突破值有什么区别?

break
值为语句赞成的下降
yield
声明。

规范

JLS 13附带有JEP
354规范,该规范总结了我们需要了解的有关新产品的所有信息。请注意,它没有被合并到语言规范中,因为它仍然是预览功能,因此不是该语言的永久组成部分。

switch

一条

yield
语句通过使一个封闭的
switch
表达式产生一个指定值来转移控制权。

YieldStatement:    yield expression;

一条

yield
语句试图将控制权转移到最内层的switch表达式;该表达式(称为 yield target
)然后立即正常完成,并且的值
expression
成为
switch
表达式的值。

  • 如果

    yield
    语句没有屈服目标,则是编译时错误。

  • 如果

    yield
    目标包含包围yield语句的任何方法,构造函数,初始化程序或lambda表达式,则是编译时错误。

  • 这是一个编译时错误,如果

    expression
    一个的
    yield
    声明是无效的(15.1)。

执行

yield
语句首先评估
expression
。如果由于
expression
某种原因突然完成了评估,则该
yield
语句由于该原因而突然完成。如果对值的评估
expression
正常完成,则产生一个值
V
,然后该
yield
语句突然完成,原因是带有值的产量
V



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5498504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存