Ну, если предположить, что ничего не поделаешь с объявлением класса изменяемого объекта, можно использовать отражение ( Class . newIntance () и Class . getFields () ) для создания нового объекта и копирования значений полей. Вы также можете реализовать глубокое копирование таким способом. Если класс поддерживает сериализацию, тогда другим хакерским подходом было бы сериализовать объект и затем сохранить десериализованную копию. Если возможно исправить конструкцию изменчивого объекта, то это был бы лучший подход.
Редактировать
Для конкретного примера, который вы привели, ответ Ромен делает то, что вы хотите. Если у вас есть общий изменчивый объект, который не предоставляет механизм для его копирования и для которого тип может быть неизвестен до более позднего периода, то подход к отражению состоит в том, как реализовать механизм копирования.