(使得Course类可复制)重写程序清单10-6中的Course类,增加一个clone 方法,执行students 域上的深度复制。
时间: 2024-02-23 19:00:58 浏览: 105
JavaScript深度复制(deep clone)的实现方法
以下是修改后的Course类,增加了clone方法来实现students域的深拷贝:
```java
public class Course implements Cloneable {
private String courseName;
private ArrayList<String> students = new ArrayList<>();
public Course(String courseName) {
this.courseName = courseName;
}
public void addStudent(String student) {
students.add(student);
}
public String[] getStudents() {
return students.toArray(new String[0]);
}
public int getNumberOfStudents() {
return students.size();
}
public String getCourseName() {
return courseName;
}
@Override
public Object clone() {
try {
Course cloned = (Course) super.clone();
cloned.students = (ArrayList<String>) students.clone();
return cloned;
} catch (CloneNotSupportedException e) {
return null;
}
}
}
```
在clone方法中,首先调用了父类的clone方法,得到一个浅拷贝的Course对象,然后将students域进行深拷贝,最后返回新的Course对象。这样,当我们使用clone方法复制一个Course对象时,得到的新对象将会拥有一个独立的、深拷贝的students列表,与原对象的students列表完全独立。
阅读全文