java 类拷贝

时间:2021-03-15 14:48:24
直接上代码:
public class Demo {
public static void main(String[] args) throws CloneNotSupportedException {
Person p1 = new Person(); p1.setAge(123);
p1.setName("abc"); Person p2 = (Person) p1.clone();
p2.setAge(222);
System.out.println(p1+""+p1.toString());
System.out.println(p2+""+p2.toString());
}
} /**
*
* @see java.lang.CloneNotSupportedException
* @see java.lang.Object#clone()
*
* */
class Person implements Cloneable {
public Object clone() throws CloneNotSupportedException{
return (Person) super.clone();
} private String name;
private Integer age; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
} 运行结果:
java 类拷贝

在日常项目偶尔会用到类拷贝

类似  map.putAll操作

但是我修改后面的对象会影响前一个对象的原始值。

都是指向同一个地址。

cloen 会另外开辟一个内存来保存拷贝出来的值。

修改不会影响原始值。个人理解