Language 初級

イミュータブルなデータ保持クラスの30行以上のボイラープレートが1行に置き換わる。

✕ Java 8
public class Point {
    private final int x, y;
    public Point(int x, int y) { ... }
    public int getX() { return x; }
    public int getY() { return y; }
    // equals, hashCode, toString
}
✓ Java 16+
public record Point(int x, int y) {}
このコードに問題がありますか? お知らせください。
📏

1行の定義

コンストラクタ、ゲッター、equals、hashCode、toStringが1行に集約されます。

🔒

デフォルトでイミュータブル

すべてのフィールドはfinal — セッターによる罠がありません。

🔗

パターンとの親和性

レコードはswitchとinstanceofの分解パターンで利用できます。

旧来のアプローチ
冗長なPOJO
モダンなアプローチ
record
JDKバージョン
16
難易度
初級
データクラスのためのレコード
利用可能

JDK 16(2021年3月)以降、広く利用可能

レコードはコンストラクタ、アクセサ(x()、y())、equals()、hashCode()、toString()を自動生成します。設計上イミュータブルであり、DTO、値オブジェクト、パターンマッチングに最適です。

共有 𝕏 🦋 in