从 Java 14 开始,yield 关键字已添加到 Java 语言中,用于实现 switch 表达式。
它用于从 switch 表达式中的 case 返回值。 例如:
int x = switch (dayOfWeek) {
case MONDAY:
yield 2;
case TUESDAY:
yield 3;
case WEDNESDAY:
yield 4;
default:
yield 0;
};
如果 switch 表达式中使用了 “case L->” 这样的形式来返回值,那么 yield 关键字用于从 case 的代码块中返回值。 例如:
int x = switch (dayOfWeek) {
case MONDAY -> 2;
case TUESDAY -> 3;
case WEDNESDAY -> 4;
case THURSDAY, FRIDAY -> 5;
case SATURDAY, SUNDAY -> {
// line 1..
// line 2...
// line 3...
yield 8;
}
};
注意 yield 后面的代码可以是一个返回值的表达式。 例如:
int days = switch (month) {
case 1, 3, 5, 7, 8, 10, 12:
yield 31;
case 4, 6, 9:
yield foo();
case 2:
yield (year % 4 == 0 ? 29 : 28);
default:
throw new IllegalArgumentException();
};
在此示例中,foo() 是可以返回整数值的方法。