Во-первых, пусть ваш класс реализует интерфейс Cloneable
.Без этого вызов clone()
для вашего объекта вызовет исключение.
Далее переопределите Object.clone()
, чтобы он возвратил ваш конкретный тип объекта.Реализация может быть просто:
@Override
public MyObject clone() {
return (MyObject)super.clone();
}
, если вам не нужно сделать что-то более сложное.Убедитесь, что вы звоните super.clone()
, хотя.
Это вызовет весь путь вверх по иерархии до Object.clone()
, который копирует каждый фрагмент данных в вашем объекте в новый, который он создает.Ссылки копируются, а не клонируются, поэтому, если вам нужна глубокая копия (клоны объектов, на которые ссылается ваш объект), вам потребуется проделать дополнительную работу в переопределенной функции clone()
.