如何使用?
需要完整块时,带有箭头标签:
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语句则通过 使一个封闭的
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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)