有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java原型,制作深度拷贝

我想问一下,因为我对这方面比较陌生,这是制作文档对象深度副本的正确方法吗?我不知道我是否正确实现了字段的复制

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;
    }   

}

共 (1) 个答案

  1. # 1 楼答案

    您的对象只有基本类型和不可变字符串,因此Document doc =(Document)super.clone();就足够了,您不必进行单独的赋值。 但这有点冒险,因为如果您曾经向字段添加可变对象,不单独复制该对象将导致问题。 关于使用一些现有库进行深度复制,已经有了广泛的讨论,例如:How do you make a deep copy of an object in Java?