0
点赞
收藏
分享

微信扫一扫

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

小沙坨 2021-09-21 阅读 34
java日常

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

举报

相关推荐

0 条评论