如何在 Java 中手动实现深拷贝?
时间: 2024-09-28 10:07:36 浏览: 35
在 Java 中手动实现深拷贝通常涉及递归遍历对象的属性,并创建对应的新实例。以下是一个简单的示例,假设有一个自定义的 `Person` 类:
```java
public class Person {
private String name;
private Address address;
// getters and setters
public Person deepCopy() {
try {
return (Person) this.getClass().getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new RuntimeException("Failed to create a copy", e);
}
// 如果有嵌套对象,需要进一步处理
Person copiedPerson = new Person();
copiedPerson.setName(this.name);
copiedPerson.setAddress(this.address.deepCopy()); // 对地址进行深拷贝
return copiedPerson;
}
}
class Address {
// ... 类同处理
}
```
在这个例子中,`deepCopy` 方法首先尝试通过无参构造函数创建一个新的 `Person` 实例,然后分别复制其属性。如果对象中有嵌套的 `Address` 等对象,也需要递归调用 `deepCopy` 方法以实现完整的深拷贝。
阅读全文