Сериализация и клонирование
Это разные задачи:
- Сериализация превращает состояние в формат для хранения или передачи;
- Клонирование создаёт новый объект внутри процесса;
- неизменяемый объект обычно можно безопасно разделять без копирования.
Сериализация не гарантирует корректную deep-копию доменной модели: она может потерять типы, инварианты, общие ссылки или служебное состояние.
// Контракт копии виден прямо в модели.
Order copy = Order.copyOf(source);Быстрый выбор
| Нужно | Решение |
|---|---|
| снимок для API/очереди | явный DTO и формат |
| копия value object | часто не нужна |
| копия изменяемой модели | copy constructor/фабрика |
| совместимость старого Java API | осторожный Cloneable |
На собеседовании
Вызывает ли clone конструктор? Object.clone() — нет.
Является ли serialize/deserialize хорошим общим deep clone? Нет: дорого и семантика формата не равна контракту копирования.
Что нужно определить до копирования? Какие вложенные объекты разделяются, а какие получают новую идентичность.