美文网首页
Object类 clone()方法 生成的新对象与原对象的关系

Object类 clone()方法 生成的新对象与原对象的关系

作者: 晏子小七 | 来源:发表于2017-11-21 15:48 被阅读13次

    clone生成的新对象与原对象的关系,需要区别2个对象建是否存在相同的引用或对应的内存地址是否存在共用情况,若存在则 该次clone为 “浅复制”,否则为“深复制”, 而且Object的clone方法是属于 “浅复制”,看示例:
    public class ObjectCloneTest2 {

         public static void main(String[] args) {
            Animal a1 = new Animal(1, "pig");
            Animal a2 = (Animal) a1.clone();
              System.out.println(a1.getName() == a2.getName() ? "浅复制" : "深复制");
             
             System.out.println(a1);
             a1.setAge(11);
             a1.setName("big pig");
             System.out.println(a1.age + ":" + a1.name);
             
             System.out.println(a2);
             System.out.println(a2.age + ":" + a2.name);
             
         }
     
     }
     
     class Animal implements Cloneable{
         int age;
         String name;
     
         Animal(int age, String name) {
             this.age = age;
             this.name = name;
         }
     
         public Animal clone() {
             Animal o = null;
     
             try {
                 o = (Animal) super.clone();
             } catch (CloneNotSupportedException e) {
                 e.printStackTrace();
             }
     
             return o;
         }
     
         public int getAge() {
             return age;
         }
     
         public void setAge(int age) {
             this.age = age;
         }
     
         public String getName() {
             return name;
         }
     
         public void setName(String name) {
             this.name = name;
         }
     }
    

    运行结果:
    浅复制
    com.headfirst.test.Animal@15db9742
    11:big pig
    com.headfirst.test.Animal@6d06d69c
    1:pig

    相关文章

      网友评论

          本文标题:Object类 clone()方法 生成的新对象与原对象的关系

          本文链接:https://www.haomeiwen.com/subject/zgdwvxtx.html