Какая польза от интерфейса Clonaeable в Java? - PullRequest
0 голосов
/ 10 декабря 2018

Пожалуйста, не закрывайте как дубликат.Я знаю, что на эту тему есть несколько тем, но ни одна из них не отвечает на мой вопрос.

Я все еще пытаюсь понять, зачем нам нужен интерфейс Cloneable в Java.Если мы хотим создать копию объекта, мы можем просто переопределить метод clone из класса Object и вызвать super.clone ().Так как метод clone в классе Object является нативным, мы не знаем, проверяет ли нативная реализация instanceOf Cloneable, а затем создает копию else, генерируя исключение CloneNotSupportedException.

Я знаю, что переопределять метод clone () не рекомендуетсячтобы создать копию, вместо этого следует использовать конструктор копирования, но все же я хочу знать, оправдано ли существование интерфейса маркера Cloneable.

1 Ответ

0 голосов
/ 28 декабря 2018

Реализует ли объект Cloneable или не имеет значения, вызывается ли встроенный метод Object.clone() (возможно, с помощью некоторого метода в вашем классе, который вызывает super.clone()).Если вызывается встроенный метод Object.clone() и объект не реализует Cloneable, он выдает CloneNotSupportedException.Вы говорите «мы не знаем», делает ли метод Object.clone() это - мы делаем - документация для метода Object.clone() в библиотеке классов Java явно обещает это, и это описывает подробнооперация клонирования, которую выполняет метод.

Если вы реализуете метод клонирования, который не вызывает до Object.clone(), то не имеет значения, реализует ли объект Cloneable или нет.

...