首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - Prototype,制作深度副本

Java - Prototype,制作深度副本
EN

Stack Overflow用户
提问于 2019-04-14 00:32:38
回答 1查看 65关注 0票数 3

我想问,因为我是新手,这是制作文档对象深度副本的正确方式吗,我不知道我是否正确地实现了字段的复制。

代码语言:javascript
复制
package model;

public class Document implements Cloneable {
    //fields
    private String author;
    private String date;
    private double versionID;
    private String contents;


    public Document(String author,String date,double versionID,String contents) {
         this.author=author;
         this.date=date;
         this.versionID=versionID;
         this.contents=contents;        
    }

    //getters-setters

    }
    //making the deep-copy clone all obj ref to Document
    @Override
    public Object clone() throws CloneNotSupportedException {
        Document doc =(Document)super.clone();
        doc.author=this.author;
        doc.date=this.date;
        doc.versionID=this.versionID;
        doc.contents=this.contents;

        return doc;
    }   

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-14 00:53:29

你的对象只有原始类型和不可变的字符串,所以Document doc =(Document)super.clone();就足够了,你不需要做单独的赋值。但这有点风险,因为如果您向字段中添加了可变对象,不单独复制该对象将会导致问题。已经有了关于使用一些现有的库来进行深度复制的扩展讨论,例如这里:How do you make a deep copy of an object in Java?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55667628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档