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

Java 13引入了 用于switch表达式的关键字。

如何使用它,与默认值returnbreak值有什么区别?

回答:

回答:

如何使用?

  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语句则通过 产生一个指定值来转移控制权。

突破值有什么区别?

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

以上是 Java 13中新的关键字“ yield”是什么意思? 的全部内容, 来源链接: utcz.com/qa/406981.html

回到顶部