侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

Clone

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 166 阅读 / 202 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
/ 后端 / JAVA / Clone
传对象时,是值传递,传递的是对象的引用. 也就是地址,所以需要隔离影响的时候就要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()方法. 也有点递归的意思, 递归到最后就是基本类型了.

0

评论区