instanceofのパターンマッチング
パターンマッチングで型チェックとキャストを1ステップで行う。
コード比較
✕ Java 8
if (obj instanceof String) {
String s = (String) obj;
System.out.println(s.length());
}
✓ Java 16+
if (obj instanceof String s) {
IO.println(s.length());
}
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
冗長なキャストの排除
型チェックと変数バインディングが1つの式で完結します。
行数の削減
2行が1行になります — キャストの行が完全になくなります。
スコープの安全性
パターン変数は型が保証されるスコープ内でのみ有効です。
旧来のアプローチ
instanceof + キャスト
モダンなアプローチ
パターン変数
JDKバージョン
16
難易度
初級
JDKサポート
instanceofのパターンマッチング
利用可能
JDK 16(2021年3月)以降、広く利用可能
仕組み
instanceofのパターンマッチングにより、型チェック後の冗長なキャストが不要になります。パターン変数は型が保証されるスコープ内でのみ有効になるため、コードがより安全かつ簡潔になります。
関連ドキュメント