3. Clone

People divide object copy in:

You may assume that you should use the clone method of Object, along with the Cloneable interface.

Unfortunately the design of this part of Java is not quite right, and it is very difficult to use it well.

So it is recommend that you implement your own method to clone. See Bloch’s book for an insightful discussion of the problem.