Бывают в жизни моменты, когда хочется взять и сделать полную копию какого-нибудь объекта.
Как-то так:
ComplexObject obj = ...
ComplexObject copy = CopyUtils.deepCopy(obj);
Проблема в том, что классы в Java бывают произвольной сложности - количество полей класса и их типы никак не регламентированы. Более того, система типов в Java замкнута - элементами массива/списка могут являться абсолютно любые типы данных, в том числе и массивы/списки. А ещё рекурсивные структуры данных - когда объект где-то в своих дебрях содержит ссылку на себя самого. Или на свою часть.
Вам необходимо написать метод deepCopy(), который учитывает все эти нюансы и работает на объектах произвольной структуры и размера.
Немного деталей:
- По всем вопросам смело писать на [email protected]
- Работать метод должен в первую очередь правильно, а уже потом быстро.
- Использовать можно только возможности стандартной библиотеки J2SE
- Писать нужно на Java (версия 8 и выше) или Kotlin.