list<object>深复制
时间: 2024-12-22 17:31:45 浏览: 4
深复制(Deep Copy)是指创建一个对象的完全独立副本,包括对象内部的所有引用和嵌套的对象。对于 Java 中的 List<Object> 进行深复制,意味着即使原列表中有引用类型的对象(如另一个列表、数组等),新复制的列表也将拥有这些对象的独立副本,而不仅仅是引用。
在 Java 中,我们可以使用多种方法来实现深复制,取决于 List 中的对象类型。以下是一种通用的通过序列化反序列化的做法:
```java
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class DeepCopyExample {
public static <T extends Serializable> List<T> deepCopy(List<T> originalList) {
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream objectOut = new ObjectOutputStream(byteOut);
objectOut.writeObject(originalList);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream objectIn = new ObjectInputStream(byteIn);
@SuppressWarnings("unchecked")
List<T> copiedList = (List<T>) objectIn.readObject();
return copiedList;
} catch (IOException | ClassNotFoundException e) {
throw new RuntimeException("Failed to create deep copy", e);
}
}
// 示例用法
public static void main(String[] args) {
List<MyObject> original = new ArrayList<>();
List<MyObject> copied = deepCopy(original);
}
}
```
这里假设 MyObject 实现了 Serializable 接口。如果对象不满足这个条件,可能需要自定义序列化策略或使用第三方库如 Apache Commons Lang 或 Gson。
阅读全文