レコードパターン(分解)
パターン内でレコードを直接分解 — フィールドを1ステップで取り出す。
コード比較
✕ Java 8
if (obj instanceof Point) {
Point p = (Point) obj;
int x = p.getX();
int y = p.getY();
System.out.println(x + y);
}
✓ Java 21+
if (obj instanceof Point(int x, int y)) {
IO.println(x + y);
}
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
直接の取り出し
アクセサを手動で呼び出さずにレコードのコンポーネントにアクセスできます。
ネスト可能
パターンをネストできます — 単一の式で内部レコードもマッチングできます。
コンパクトなコード
5行が2行になります — 余分な記述が減り、明快さは変わりません。
旧来のアプローチ
手動アクセス
モダンなアプローチ
分解パターン
JDKバージョン
21
難易度
中級
JDKサポート
レコードパターン(分解)
利用可能
JDK 21 LTS(2023年9月)以降、広く利用可能
仕組み
レコードパターンを使うと、instanceofやswitchでレコードのコンポーネントを直接分解できます。ネストしたパターンもサポートしており、中間変数なしで深いマッチングが可能です。
関連ドキュメント