java 怎么实现类的深拷贝
时间: 2024-03-13 22:35:11 浏览: 140
Java实现实体类拷贝[深,很深的那种...]
在 Java 中,要实现类的深拷贝,可以使用以下几种方法:
1. 实现 Cloneable 接口并重写 clone() 方法:
```java
public class MyClass implements Cloneable {
private int intValue;
private List<String> stringList;
// 省略构造方法和其他方法
@Override
protected Object clone() throws CloneNotSupportedException {
MyClass cloned = (MyClass) super.clone();
cloned.stringList = new ArrayList<>(this.stringList); // 创建一个新的列表对象
return cloned;
}
}
```
然后,在需要进行深拷贝的地方调用 `clone()` 方法即可。
2. 使用序列化和反序列化:
```java
import java.io.*;
public class MyClass implements Serializable {
private int intValue;
private List<String> stringList;
// 省略构造方法和其他方法
public MyClass deepCopy() throws IOException, ClassNotFoundException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(this);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
return (MyClass) ois.readObject();
}
}
```
在需要进行深拷贝的地方调用 `deepCopy()` 方法即可。
3. 使用第三方库,如 Apache Commons 的 SerializationUtils:
```java
import org.apache.commons.lang3.SerializationUtils;
public class MyClass {
private int intValue;
private List<String> stringList;
// 省略构造方法和其他方法
public MyClass deepCopy() {
return SerializationUtils.clone(this);
}
}
```
使用 `SerializationUtils.clone()` 方法进行深拷贝。
这些方法可以根据你的需求选择适合的方式来实现类的深拷贝。
阅读全文