Java HashMap – глубокая копия

Я просто пытаюсь найти лучшее решение, как сделать глубокую копию HashMap . На этой карте нет объектов, реализующих Cloneable . Я хотел бы найти лучшее решение, чем сериализацию и десериализацию.

    Взгляните на Deep Cloning , в Google Code вы найдете библиотеку. Вы можете прочитать его на https://github.com/kostaskougios/cloning .

    Как это работает, легко. Это может клонировать любой объект, и объект не должен реализовывать какие-либо интерфейсы, такие как serializable.

     Cloner cloner = new Cloner(); MyClass clone = cloner.deepClone(o); // clone is a deep-clone of o 

    Помните: это может клонировать тысячи объектов (если клонированный объект имеет много ссылок). Кроме того, копирование файлов или streamов может привести к сбою JVM.

    Тем не менее, вы можете игнорировать некоторые примеры classов, таких как streamи и так далее. Стоит проверить эту библиотеку и ее источник.

    Я не думаю, что это может быть реализовано в общем виде.

    • Если у вас есть шанс просто реализовать клон, я бы пошел именно так.
    • Немного сложнее создание карты типов, где вы просматриваете какой-то class внедрения clone, основанный на classе каждого объекта
    • Когда объекты могут образовывать прямой ациклический график, я бы вообще сохранил карту от оригинала до клона каждого объекта, который я когда-либо видел, и проверить, не сделал ли я его уже
    • Когда у вас общий график, проблема становится очень неприятной. У вас могут быть странные ограничения порядка создания объектов, это может быть даже невозможно, если у вас есть конечные поля.

    На данный момент я бы предложил переписать свой вопрос менее общим образом

    Давайте будем гением компьютера.