Обратите внимание на следующее из статьи 11 эффективного Java (Разумное переопределение клонирования ), где Джош Блох объясняет, что не так с clone()
контрактом.
There are a number of problems with this contract. The provision that “no constructors are called” is too strong. A well-behaved clone method can call constructors to create objects internal to the clone under construction. If the class is final, clone can even return an object created by a constructor.
Может ли кто-нибудь объяснить, что Джош Блох говорит в первом абзаце: «Если класс final
, clone
может даже вернуть объект, созданный конструктором». Какое отношение final
имеет здесь к clone()
?