用java写个复制java对象的工具类
时间: 2024-04-10 09:34:18 浏览: 9
当需要复制一个Java对象时,可以使用以下方法创建一个工具类来实现对象的深拷贝:
```java
import java.io.*;
public class ObjectCopyUtil {
public static <T extends Serializable> T deepCopy(T object) {
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(object);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
@SuppressWarnings("unchecked")
T copiedObject = (T) in.readObject();
out.close();
in.close();
return copiedObject;
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
return null;
}
}
}
```
使用方法如下:
```java
public class Main {
public static void main(String[] args) {
// 创建一个对象
Person person1 = new Person("John", 25);
// 使用工具类进行深拷贝
Person person2 = ObjectCopyUtil.deepCopy(person1);
// 输出结果
System.out.println(person1); // 原始对象
System.out.println(person2); // 拷贝后的对象
}
}
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
这样,就可以使用 `ObjectCopyUtil.deepCopy()` 方法来复制Java对象了。需要注意的是,被复制的对象及其所有引用的对象都必须实现 `Serializable` 接口。