Рассмотрите следующее из Эффективного Java-элемента 11 (разумно переопределите клон), где Джош Блох объясняет, что не так с контрактом clone()
.
С этим контрактом существует ряд проблем. Постановление о том, что "нет конструкторы называются" слишком сильными". Хорошо выполненный метод клонирования может вызывать конструкторы для создания объектов, встроенных в построенный клон. Если класс final, clone может даже вернуть объект, созданный конструктором.
Может кто-нибудь объяснить, что говорит Джош Блох в первом абзаце: "Если класс final
, clone
может даже вернуть объект, созданный конструктором". Что final
связано с clone()
здесь?