java 写一个深拷贝
时间: 2024-02-23 19:32:36 浏览: 77
要实现一个深拷贝,需要确保所有的属性都被复制,而不是简单地复制引用。以下是一个Java实现的深拷贝示例:
```java
import java.util.ArrayList;
import java.util.List;
public class Person implements Cloneable {
private String name;
private int age;
private List<String> hobbies;
public Person(String name, int age, List<String> hobbies) {
this.name = name;
this.age = age;
this.hobbies = hobbies;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getHobbies() {
return hobbies;
}
@Override
public Object clone() throws CloneNotSupportedException {
Person cloned = (Person) super.clone();
cloned.hobbies = new ArrayList<>(hobbies);
return cloned;
}
}
```
在这个例子中,Person类实现了Cloneable接口,并覆盖了clone()方法。在clone()方法中,我们首先调用了super.clone()方法来创建一个浅拷贝的对象。然后我们创建一个新的ArrayList,将原始hobbies列表中的元素添加到其中。最后我们将新对象的hobbies属性设置为新创建的列表。
这个实现确保了当我们复制Person对象时,所有的属性都被复制,而不是简单地复制引用。
阅读全文