Does not implement clone() method! public class Bar { … public Object clone() { … } Does not implement Cloneable interface!
Returns null! At least, throw CloneNotSupportedException instead!
Never calls super.clone()!
Foo public class Bar { Foo f; … public Object clone() { … clone.f = (Foo) f.clone(); … } In Java 5, use covariant return type!
Fields selected for deep copy
Complete240 clone() methods Consistent class annotation 189 classes do not implement interface 14 do not implement clone() method Returning nullNo violations Not calling super.clone()237 violations! Object as return typeIn all 240 cases
public class Bar extends Foo { public Object clone() { Bar clone = super.clone(); … return clone; }