序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在Java中,我们可以使用java.io包中的ObjectOutputStream类将对象序列化为字节流,然后通过ObjectInputStream类将字节流反序列化为对象。
反序列化是将字节流转换回对象的过程。在Java中,我们可以使用java.io包中的ObjectInputStream类将字节流反序列化为对象。
以下是一个简单的示例:
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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class SerializeDemo {
public static void main(String[] args) {
Person person = new Person("张三", 30);
// 序列化
try (FileOutputStream fos = new FileOutputStream("person.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
oos.writeObject(person);
System.out.println("序列化成功");
} catch (IOException e) {
e.printStackTrace();
}
// 反序列化
try (FileInputStream fis = new FileInputStream("person.ser");
ObjectInputStream ois = new ObjectInputStream(fis)) {
Person deserializedPerson = (Person) ois.readObject();
System.out.println("反序列化成功");
System.out.println(deserializedPerson);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
在这个示例中,我们创建了一个实现Serializable接口的Person类。然后,我们使用ObjectOutputStream将Person对象序列化到文件"person.ser"中,接着使用ObjectInputStream从文件中反序列化Person对象。