Ответы об ошибках на основе Record
Использовать Records для лаконичных неизменяемых типов ответов об ошибках.
Сравнение кода
✕ 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());
}
}
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Лаконичность
Определение типов ошибок в 3 строках вместо 30.
Неизменяемость
Данные об ошибке не могут быть случайно изменены после создания.
Автоматический toString
Идеально для логирования — все поля отображаются автоматически.
Старый подход
Map или громоздкий класс
Современный подход
Record-ошибки
Начиная с JDK
16
Сложность
Средний
Поддержка JDK
Ответы об ошибках на основе Record
Доступно
Доступно в JDK 16 (март 2021)
Как это работает
Records отлично подходят для ответов об ошибках — они неизменяемы, имеют встроенные equals/hashCode для сравнения и toString для логирования. Пользовательские конструкторы позволяют выполнять валидацию или задавать значения по умолчанию.
Связанная документация
Доказательство