Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 2.01 KB

Deep-clone.md

File metadata and controls

29 lines (21 loc) · 2.01 KB

Бывают в жизни моменты, когда хочется взять и сделать полную копию какого-нибудь объекта.

Как-то так:

ComplexObject obj = ...
ComplexObject copy = CopyUtils.deepCopy(obj);

Проблема в том, что классы в Java бывают произвольной сложности - количество полей класса и их типы никак не регламентированы. Более того, система типов в Java замкнута - элементами массива/списка могут являться абсолютно любые типы данных, в том числе и массивы/списки. А ещё рекурсивные структуры данных - когда объект где-то в своих дебрях содержит ссылку на себя самого. Или на свою часть.

Вам необходимо написать метод deepCopy(), который учитывает все эти нюансы и работает на объектах произвольной структуры и размера.

Немного деталей:

  • По всем вопросам смело писать на [email protected]
  • Работать метод должен в первую очередь правильно, а уже потом быстро.
  • Использовать можно только возможности стандартной библиотеки J2SE
  • Писать нужно на Java (версия 8 и выше) или Kotlin.
<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-60374351-1', 'auto'); ga('send', 'pageview'); </script>