传对象时,是值传递,传递的是对象的引用. 也就是地址,所以需要隔离影响的时候就要clone
Body body1 = (Body) body.clone();
这是浅拷贝
深拷贝
成员之间没有任何关联
浅拷贝
成员是对象的话,指向的是同一个, 修改一个另一个也会变
如何实现深拷贝
自己实现
递归复制, 是对象就递归,不是对象才复制, 就是只复制基本类型.
利用clone
static class Body implements Cloneable{
public Head head;
public Body() {}
public Body(Head head) {this.head = head;}
@Override
protected Object clone() throws CloneNotSupportedException {
Body newBody = (Body) super.clone();
newBody.head = (Head) head.clone();
return newBody;
}
}
给要复制的类实现 Cloneable里的 接口和clone()方法. 也有点递归的意思, 递归到最后就是基本类型了.
评论区