 <p>Sometimes you need to modify some fields before returning from the clone() method.</p> <p>Check this : <a href="http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#clone" rel="nofollow">http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Object.html#clone</a>(). I pasted the relevant part here for convenience: </p> <blockquote> <p>"By convention, the object returned by this method should be independent of this object (which is being cloned). To achieve this independence, it may be necessary to modify one or more fields of the object returned by super.clone before returning it. Typically, this means copying any mutable objects that comprise the internal "deep structure" of the object being cloned and replacing the references to these objects with references to the copies. If a class contains only primitive fields or references to immutable objects, then it is usually the case that no fields in the object returned by super.clone need to be modified."</p> </blockquote>