代码生成(java二进制流深拷贝)
时间: 2023-07-08 07:33:32 浏览: 134
以下是一个 Java 的示例代码,实现对二进制流进行深拷贝:
```java
import java.io.*;
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class DeepCopyDemo {
public static void main(String[] args) throws Exception {
// 初始化一个 Person 对象
Person p1 = new Person("John", 20);
// 将对象序列化为二进制流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(p1);
byte[] bytes = bos.toByteArray();
// 将二进制流反序列化为新的对象
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis);
Person p2 = (Person) ois.readObject();
// 输出拷贝后的结果
System.out.println("name: " + p2.getName()); // 输出 "name: John"
System.out.println("age: " + p2.getAge()); // 输出 "age: 20"
}
}
```
在上述代码中,我们定义了一个类 `Person`,并实现了 `Serializable` 接口,以便能够被序列化为二进制流。然后,我们将 `Person` 对象序列化为二进制流,并将其反序列化为新的对象。需要注意的是,由于序列化和反序列化涉及到 I/O 操作,因此需要将其放在 `try-catch` 块中进行异常处理。最后,输出拷贝后的结果即可。
阅读全文