0
点赞
收藏
分享

微信扫一扫

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

小沙坨 2021-09-21 阅读 33
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 条评论