Вопрос проверяет понимание различий между record и обычным классом в Java, а также знание случаев, когда record предпочтительнее.
Record — это фича, введённая в Java 14 (как preview) и ставшая стабильной в Java 16. Это специальный тип класса, который предназначен для прозрачного хранения неизменяемых данных. В отличие от обычного класса, record автоматически генерирует конструктор, методы доступа (геттеры), а также методы equals(), hashCode() и toString() на основе всех полей, объявленных в заголовке record.
Обычный класс для хранения точки:
public class Point {
private final int x;
private final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() { return x; }
public int getY() { return y; }
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
@Override
public String toString() { ... }
}То же самое с record:
public record Point(int x, int y) {}Как видите, record занимает одну строку вместо десятков.
Record идеально подходит для DTO (Data Transfer Objects), value objects, ответов API, ключей в HashMap и любых других случаев, когда объект служит просто контейнером для данных и не должен изменяться. Однако record не подходит, если вам нужно наследование, изменяемые поля или сложная бизнес-логика.
Вывод: Используйте record, когда вам нужен простой, неизменяемый и прозрачный контейнер для данных. Это уменьшает количество кода, улучшает читаемость и снижает вероятность ошибок.