パターン変数を使う
出力はどれか。
public class Main {
public static void main(String[] args) {
Object o = "Java17";
if (o instanceof String s && s.length() > 4) {
System.out.println(s.toUpperCase());
} else {
System.out.println("other");
}
}
}
- A
JAVA17 - B
Java17 - C
other - D コンパイルエラーになる
正解と解説を見る
正解: A
- A: o は String で長さ 6 > 4 なので、パターン変数 s で大文字にした "JAVA17" が出力されます。
- B: toUpperCase() で大文字にしてから出力しています。
- C: 条件はどちらも true なので else には進みません。
- D:
&&の右側でパターン変数 s を使うのは正しい書き方です。
ポイント
o instanceof String sが true のとき、キャスト済みの変数 s が使えます。&&の右側でも使えます。