帮我用java写一个深拷贝的程序
时间: 2023-01-11 13:55:36 浏览: 173
在 Java 中,您可以使用以下几种方式来实现深拷贝:
1. 使用序列化 (Serialization):将对象写入字节数组流中,然后从字节数组中读取出来,得到一个新的对象。这种方法需要对象实现 `java.io.Serializable` 接口。
2. 使用对象的 `clone()` 方法:这种方法需要对象实现 `java.lang.Cloneable` 接口,并覆盖 `Object` 类的 `clone()` 方法。
3. 手动拷贝对象的属性:这种方法需要手动遍历对象的所有属性,将它们复制到新的对象中。
下面是使用序列化来实现深拷贝的示例代码:
```java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class DeepCopy {
public static Object copy(Object object) {
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ObjectOutputStream outputStrm = new ObjectOutputStream(outputStream);
outputStrm.writeObject(object);
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
ObjectInputStream objInputStream = new ObjectInputStream(inputStream);
return objInputStream.readObject();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
```
使用方法:
```java
MyObject obj = new MyObject();
// 将 obj 深拷贝到 objCopy 中
MyObject objCopy = (MyObject) DeepCopy.copy(obj);
```
使用 `clone()` 方法实现深拷贝的示例代码如下:
```java
public class MyObject implements Cloneable {
public Object clone() throws CloneNotSupportedException {
MyObject obj = (MyObject) super.clone();
// 在这里复制对
阅读全文