帮我用java写一个对象深拷贝的代码
时间: 2023-02-06 10:38:42 浏览: 139
在 Java 中,可以使用如下方式来实现对象的深拷贝:
1. 使用序列化实现深拷贝
可以通过将对象序列化为字节数组,然后再反序列化回来,来实现深拷贝。代码示例如下:
```java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class DeepCopy {
public static <T> T deepCopy(T obj) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
return (T) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
```
2. 使用 clone() 方法实现深拷贝
如果对象实现了 `java.lang.Cloneable` 接口,就可以使用 `clone()` 方法来实现深拷贝。需要注意的是,这种方式只能拷贝对象本身的属性,如果对象中包含其他对象,则这些对象并不会被拷贝,因此这种方式不能完全实现深拷贝。
示例代码如下:
```java
public class DeepCopy implements Cloneable {
// 实现 Cloneable 接口
@Override
public DeepCopy clone() {
DeepCopy copy = null;
try {
copy = (DeepCopy) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return copy;
}
}
```
3. 使用工具类实现深拷贝
第三种
阅读全文