レコードベースのエラーレスポンス
レコードを使って簡潔でイミュータブルなエラーレスポンス型を定義する。
コード比較
✕ Java 8
// Verbose error class
public class ErrorResponse {
private final int code;
private final String message;
// constructor, getters, equals,
// hashCode, toString...
}
✓ Java 16+
public record ApiError(
int code,
String message,
Instant timestamp
) {
public ApiError(int code, String msg) {
this(code, msg, Instant.now());
}
}
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
簡潔
30行ではなく3行でエラー型を定義できます。
イミュータブル
エラーデータは作成後に誤って変更されることがありません。
自動toString
ロギングに最適 — すべてのフィールドが自動的に表示されます。
旧来のアプローチ
MapまたはVerboseクラス
モダンなアプローチ
エラーレコード
JDKバージョン
16
難易度
中級
JDKサポート
レコードベースのエラーレスポンス
利用可能
JDK 16(2021年3月)以降、広く利用可能
仕組み
レコードはエラーレスポンスに最適です — イミュータブルで、比較用のequals/hashCodeが組み込まれており、ロギング用のtoStringが自動生成されます。カスタムコンストラクタでバリデーションやデフォルト値を追加できます。
関連ドキュメント