帮我写个深拷贝工具类,能实现属性相同,类型不同的的拷贝,其实属性可能是对象,也可能是集合对象
时间: 2023-06-02 20:04:47 浏览: 43
好的,我可以为您提供一个深拷贝工具类,可以实现属性相同,类型不同的拷贝。这个工具类可以处理属性是对象或集合对象的情况。
以下是示例代码:
```java
import java.io.*;
public class DeepCopyUtil {
@SuppressWarnings("unchecked")
public static <T extends Serializable> T deepCopy(T obj) throws IOException, ClassNotFoundException {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream(byteOut);
objOut.writeObject(obj);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream objIn = new ObjectInputStream(byteIn);
return (T) objIn.readObject();
}
}
```
使用示例:
```java
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
private Address address;
// 省略 getter 和 setter 方法
}
class Address implements Serializable {
private static final long serialVersionUID = 1L;
private String city;
private String street;
// 省略 getter 和 setter 方法
}
Person person = new Person();
person.setName("Tom");
person.setAge(30);
Address address = new Address();
address.setCity("Beijing");
address.setStreet("Haidian");
person.setAddress(address);
Person clonedPerson = DeepCopyUtil.deepCopy(person);
```
此时,`clonedPerson` 就是 `person` 的深度拷贝。需要注意的是,要拷贝的类必须实现 `Serializable` 接口。