既然java中的对象都是以指针的形式存在,在用等号赋值时两个对象会指向同一段内存。那么有什么办法可以将一个对象先保存在一个变量中,然后更改这个对象的某些成员变量后依然保存着变更前的对象的值。
就像int a = 10; b = a; a = 5;这时b仍然保存着a变更前的值。
但如果是对象的话,obj obj1.a = 10; obj2 = obj1; obj1.a = 5;这是obj2.a也会变成5.有什么办法可以让obj2储存的是obj1变更前的值呢?

解决方案 »

  1.   

    obj2=obj1.clone();但有个前提是obj1的成员变量不是对象!
      

  2.   

    要进行深层次的clone,不然还是没办法.
      

  3.   

    Obj obj2 = new Obj();
    obj2.setA(obj.getA());
    ...
      

  4.   

    深层 clone , 或者  串行化先进 , 后出 .
      

  5.   

    自己实现clone方法,前提是属性如果是类对象,则这个类本身也要实现clone方法,这个和可序列化一样