对象的克隆
当拷贝一个变量时,原始变量与拷贝变量引用同一个对象,这就就是说,改变一个变量所引用的对象将会对另外一个变量产生影响。如下图:
//拷贝 Employee original = new Employee("jim", 10000); Employee copy = orginal; //克隆 Employee copy = original.clone();
clone()方法是object类的一个proteced方法,也就是说,在用户编写的代码中不能直接调用它。只有Employee类才能克隆Employee对象。默认的克隆操作是浅拷贝,它并没有克隆包含在对象中的内部对象。
深拷贝的实现:
//深拷贝 class Employee implements Claoneable{ //实现深拷贝 public Employee clone() throws CloneNotSupportedException{//抛出异常 Employee cloned = (Employee) super.clone(); cloned.hireDay = (Date) hireDay.clone(); return cloned; } }