|| の右側でパターン変数を使う
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
Object o = "abc";
if (o instanceof String s || s.length() > 2) {
System.out.println(s);
}
}
}
- A
abcと出力される - B 実行時に例外が発生する
- C コンパイルエラーになる
- D 何も出力されない
正解と解説を見る
正解: C
- A: 実行まで進まないので、何も出力されません。
- B: パターン変数のスコープの誤りはコンパイル時に見つかります。
- C:
||の右側は String でないときに評価されるので、そこで s は使えずコンパイルエラーです。 - D: 実行まで進まないので、何も出力されません。
ポイント
||の右側は、左側が false のとき (= String でないとき) に評価されます。そのとき s は使えないのでコンパイルエラーです。