TGViewer
Java Interview Review Java Interview Review @javasobes · 6.56K subscribers
Post #381 13K
clone

По умолчанию protected – потому что универсальной реализации нет, а вызов приведет к CloneNotSupportedException. Нужно писать свою реализацию, делать при этом ее public и добавлять классу интерфейс Cloneable. Подразумевается что этот метод делает «глубокое копирование», то есть поля-ссылки копи будут вести на копии полей оригинала. Это диктуется соглашением, по которому объект-клон не должен зависеть от оригинала.

По контракту клон должен быть другим объектом (!= оригиналу). Рекомендуется, чтобы все классы иерархии реализовывали Cloneable, реализация метода начиналась с super.clone() (если родитель не Object), а результат был equals и имел тот же класс что и оригинал.

Альтернативы (многие считают что более удобные) метода clone - конструктор копирования и паттерн factory method. Всё, что нужно знать о копировании объектов в Java можно найти в Effective Java Item 11.

#МетодыObject
More from @javasobes
  1. Sep 17, 2022Что такое synchronized? Можно применять как модификатор метода, и как самостоятельный опер…
  2. Sep 14, 2022​Чем отличаются checked и unchecked исключения? Вопрос формулируют по-разному, суть вопрос…
  3. Sep 13, 2022Какие бывают модификаторы? 🔘 Модификаторы доступа private, protected, public (рассмотрим…
  4. Sep 8, 2022Какие существуют литералы? Литерал – последовательность символов, обозначающая значение пр…
  5. Sep 6, 2022Чем отличается final finally finalize? (2/2) finally – часть языковой конструкции try-catc…
  6. Sep 2, 2022Чем отличается final finally finalize? (1/2) Тем, что это даже синтаксически разные вещи.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →