ブロックと yield
出力はどれか。
public class Main {
public static void main(String[] args) {
int code = 3;
String s = switch (code) {
case 1 -> "one";
default -> {
String t = "many";
yield t + code;
}
};
System.out.println(s);
}
}
- A
many3 - B
many - C
one - D コンパイルエラーになる
正解と解説を見る
正解: A
- A: 3 は default に進み、ブロックの中で yield した "many" + 3 が値になります。
- B: yield しているのは
t + codeなので、code の 3 も連結されます。 - C: code は 3 なので case 1 には一致しません。
- D:
->の右側のブロックで yield を使うのは正しい書き方です。
ポイント
->の右側をブロック{ }にしたときは、yield で値を返します。return は使えません。