java 序列化和反序列化涉及以下步骤:将实现了 serializable 接口的类写入流中(序列化)。将对象从流中读取(反序列化)。

Java 序列化和反序列化的过程
序列化
- 编写一个实现了
Serializable接口的类。 - 创建一个
ObjectOutputStream对象,并将其与一个文件或字节流关联。 - 使用
ObjectOutputStream.writeObject()方法将对象写入流中。
示例代码:
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class Employee implements Serializable {
private String name;
private int age;
// 省略getter和setter方法
public static void main(String[] args) {
Employee employee = new Employee("John", 30);
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.txt"))) {
out.writeObject(employee);
} catch (Exception e) {
e.printStackTrace();
}
}
}反序列化
weiit-saas是一款Java开源项目,由weiit团队自研,意在通过技术封装,帮助企业一键生成小程序、公众号,让企业拥有独立品牌的自营商城。weiit-saas是完全开源电商SaaS系统,属于weiit开源的社区版,旧版已不在维护和更新,仅供学习和参考,新版saas从底层架构到前后端UI设计已经全面优化和升级。 主要特点1、项目采用Spring+SpringMVC+Mybatis主流开源框架
立即学习“Java免费学习笔记(深入)”;
- 创建一个
ObjectInputStream对象,并将其与一个文件或字节流关联。 - 使用
ObjectInputStream.readObject()方法读取对象。
示例代码:
import java.io.FileInputStream;
import java.io.ObjectInputStream;
public class DeserializeEmployee {
public static void main(String[] args) {
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.txt"))) {
Employee employee = (Employee) in.readObject();
System.out.println(employee.getName() + ", " + employee.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}
}注意事项:
- 只有实现了
Serializable接口的类才能进行序列化。 - 序列化和反序列化的顺序必须一致。
- 类的结构在序列化和反序列化之间不能改变。
- 序列化对象可能会很慢,尤其是对于大型对象。










