Ответ
Data Class (Класс данных) — это шаблон проектирования, основная цель которого — хранение состояния (данных) с минимальной бизнес-логикой. Он предоставляет стандартные методы для работы с данными: доступ, сравнение и строковое представление.
Характеристики:
- Содержит преимущественно поля (состояние) и методы доступа к ним.
- Часто является immutable (неизменяемым).
- Реализует
equals(),hashCode(),toString(). - Может включать методы-компоненты (component functions), например, для деструктуризации.
Пример в Java (без Lombok):
public final class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Геттеры, equals(), hashCode(), toString()...
}
Пример в Kotlin (встроенная поддержка):
data class Person(val name: String, val age: Int)
// Автоматически генерируются: getters, equals(), hashCode(), toString(), copy(), componentN()
Использование в Java с Lombok:
import lombok.Data;
@Data // Генерирует геттеры, сеттеры, equals, hashCode, toString
public class Person {
private String name;
private int age;
}
Когда использовать:
- Транспортные объекты (DTO).
- Модели для представления данных из БД.
- Объекты-значения (Value Objects) в предметно-ориентированном проектировании (DDD).
Альтернативы: Records (Java 14+), Case Classes (Scala).