I would like to know the following:
Cloneable
means we can have a clone or a copy of objects, by
implementing the Cloneable
interface. What are the advantages and
disadvantages of doing that?The first thing you should know about Cloneable
is - don't use it.
It is very hard to implement cloning with Cloneable
right, and the effort is not worth it.
Instead of that use some other options, like apache-commons SerializationUtils
(deep-clone) or BeanUtils
(shallow-clone), or simply use a copy-constructor.
See here for the views of Josh Bloch about cloning with Cloneable
, which explains the many drawbacks of the approach. (Joshua Bloch was a Sun employee, and led the development of numerous Java features.)