Java 13中新的关键字“ yield”是什么意思?
Java 13引入了 用于switch
表达式的关键字。
如何使用它,与默认值return
或break
值有什么区别?
回答:
回答:
如何使用?
需要完整块时,带有箭头标签:
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;
}
};
使用传统积木:
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