使得 Course 类可复制)重写程序清单 10-6(参见教材Ps10)中的 Course 类,增加一个clone 方法,执行 students 域上的深度复制。用java写
时间: 2023-06-15 07:05:16 浏览: 308
以下是重写后的 Course 类,增加了 clone 方法:
```java
public class Course implements Cloneable {
private String code;
private String name;
private List<Student> students;
public Course(String code, String name, List<Student> students) {
this.code = code;
this.name = name;
this.students = students;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
@Override
public Course clone() {
try {
Course clonedCourse = (Course) super.clone();
List<Student> clonedStudents = new ArrayList<>();
for (Student student : students) {
clonedStudents.add(student.clone());
}
clonedCourse.setStudents(clonedStudents);
return clonedCourse;
} catch (CloneNotSupportedException e) {
return null;
}
}
}
```
在 clone 方法中,我们首先调用了 `super.clone()` 方法,创建了一个浅拷贝的 Course 对象。然后,我们创建一个新的 List<Student> 对象 clonedStudents,并将 students 域中的每个 Student 对象进行深拷贝,添加到 clonedStudents 中。最后,我们将 clonedStudents 设置为 clonedCourse 对象的 students 域,并返回 clonedCourse 对象。
需要注意的是,为了使得 Student 类也支持深拷贝,我们需要在 Student 类中也实现 Cloneable 接口,并重写 clone 方法。
阅读全文