Java对象复制
1.Java对象复制概念 1.1 浅复制(浅克隆) 复制的对象的所有变量与含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 1.2 深复制(深度克隆) 复制的对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向复制的新对象,而不是原来的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。 2.Java对象的clone()克隆方法 2.1 clone方法 clone方法将对象复制了一份并返回给调用者。一般而言,clone()方法满足 对任何的对象x,都有x.clone() != x;也即克隆的对象与原对象不是同一个对象,他们有不同的内存地址 对任何的对象x,都有x.clone().getClass() == x.getClass(),也即克隆对象与原对象的类型一致。 如果对象x的equals()方法定义恰当,那么x.clone().equal(x)应该成立。 2.2 Java中对象的克隆 为了获取对象的一份拷贝,我们可以利用Object的clone()方法 在派生类中覆盖基类的clone()方法,并声明为public 在派生类的clone()方法中,调用super.clone()。 在派生类中实现Cloneable接口 2.3 示例 2.3.1