gpt4 book ai didi

java - 浅拷贝和深拷贝示例

转载 作者:行者123 更新时间:2023-12-03 20:41:37 26 4
gpt4 key购买 nike

下面的方式可以实现深拷贝和浅拷贝吗?对吗?以下 2 个克隆方法中的任何一个都将放在最终代码中

public class Student{
private String name;
private DepartMent dept;


//deep copy
public Object clone() throws CloneNotSupportedException{
Student s = (Student)super.clone();
s.septDept((Department)dept.clone());
}

//shallow copy
public Object clone() throws CloneNotSupportedException{
return super.clone();
}

}

最佳答案

而不是尝试执行 Cloneable ,即 considered broken , 我建议你看看使用 copy constructors .复制构造函数将其声明类型的实例作为参数,并将该实例的字段复制到新对象。例如:

public Student(Student copyFrom) {
this.name = copyFrom.name;
this.dept = copyFrom.dept;
}

...

Student copy = new Student(originalStudent);

如果 Department 也公开了一个复制构造函数,这将允许您对 Student 进行深度复制。例如:

public Student(Student copyFrom) {
this.name = copyFrom.name;
this.dept = new Department(copyFrom.dept);
}

尽管从您的问题中不清楚为什么需要深层复制。


如需进一步阅读,this article涉及 Cloneable 的问题和复制构造函数的局限性。

关于java - 浅拷贝和深拷贝示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com