Знаете, что в Java можно не писать отдельный класс с полями, конструктором, геттерами и...
Знаете, что в Java можно не писать отдельный класс с полями, конструктором, геттерами и toString() вручную? Например, для DTO часто создают обычный класс: public class UserDto { private final Long id; private final String name; private final String email; public UserDto(Long id, String name, String email) { this.id = id; this.name = name; this.email = email; } public Long getId() { return id; } public String getName() { return name; } public String getEmail() { return email; } } Но если объект нужен просто для хранения данных, можно использовать record: public record UserDto( Long id, String name, String email ) {} Java сама создаст конструктор, методы доступа, equals(), hashCode() и toString(). Обращение к полям выглядит немного иначе: user.name() user.email() record хорошо подходит для DTO, ответов API, событий, команд, настроек и небольших неизменяемых объектов. Например, можно удобно вернуть данные из REST-контроллера: return new UserDto(1L, "Alex", "alex@mail.com"); Важно помнить: record по смыслу должен быть простым носителем данных. Если внутри начинает появляться много бизнес-логики, сложных состояний и изменяемых полей, лучше подумать об обычном классе. Так код становится короче, понятнее и меньше засоряется шаблонными методами. Java Библиотека | Мы в Телеграм