public class Location implements Cloneable { private int x; private int y; public Location(int x,int y){ this.x=x; this.y=y; } public void setLocation(int x,int y){ this.x=x; this.y=y; }
public Location clone(){ Location l=null; try{ System.out.println(super.toString()); l=(Location)super.clone(); }catch(CloneNotSupportedException e){ throw new RuntimeException("not implements Cloneable"); }finally{ return l; } } public String toString(){ return ""+x+","+y; } public static void main(String args[]){ Location lOne=new Location(5,6); Location lTwo=lOne.clone(); lOne.x=7; lOne.y=9;
Object中的clone执行的时候使用了RTTI(run-time type identification)的机制,动态得找到目前正在调用clone方法的那个reference,根据它的大小申请内存空间,然后进行bitwise的复制,将该对象的内存空间完全复制到新的空间中去,从而达到shallowcopy的目的。