Java高级-对象的完全复制

java的类实例拷贝有两种形式:
一种是引用拷贝。
一种是值拷贝。
例如:对于如下
A a1 = new A(t);
A a = a1;
那么 a和a1都是指向的同一块内存区域。即这是一种引用拷贝。
那么如何使得a完全拷贝a1的内容,也就是实现a1到a的值拷贝呢? 目前,我了解的主要有两种方法:
1. 拷贝构造函数的方法。
    即在A中要调价一种构造方法,如下:
      public A(A  a ){
             .........
       }
如上所示,在构造函数中传递实例的方法,实现值拷贝。
2. clone() 方法。
     (1)clone方法将对象复制了一份并返回给调用者。一般而言,clone()方法满足:
              1.  对任何的对象x, 都有x.clone() != x //即克隆对象与原对象不是同一个对象。
              2. 对任何的对象x,都有x.clone().getClass()= =x.getClass()//克隆对象与原对象的类型一样
              3. 如果对象x的equals()方法定义恰当,那么x.clone().equals(x)应该成立。
      (2)要想利用clone()方法,要求类必须要实现Cloneable接口,如下:
                class Student  implements   Cloneable{
                              .....................              
                }

你可能感兴趣的:(java,equals,Class)