在Java开发中,我们经常需要将对象保存到文件、数据库,或者通过网络传输。这时候,Java序列化就派上用场了。本教程将带你从零开始,一步步掌握对象序列化的核心概念和实现方法。

Java序列化是指将Java对象转换为字节流(byte stream)的过程,以便可以将其保存到文件、数据库,或通过网络发送。反序列化则是将字节流还原为原始对象的过程。
这个功能在分布式系统、缓存机制、持久化存储等场景中非常常见。
要让一个Java类支持序列化,只需让它实现 java.io.Serializable 接口即可。这是一个标记接口(marker interface),它没有任何方法,只是告诉JVM:“这个类的对象可以被序列化”。
下面是一个简单的可序列化类示例:
import java.io.Serializable;public class Person implements Serializable { private static final long serialVersionUID = 1L; // 推荐显式声明 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 + "}"; } // getter 和 setter 方法(省略)}注意:serialVersionUID 是用于版本控制的。如果类结构发生变化(如添加字段),但 serialVersionUID 不匹配,反序列化会失败。因此建议显式声明它。
Java提供了 ObjectOutputStream 和 ObjectInputStream 来完成序列化与反序列化操作。它们属于 Java IO流 体系的一部分。
import java.io.FileOutputStream;import java.io.ObjectOutputStream;public class SerializeExample { public static void main(String[] args) { Person person = new Person("张三", 25); try (FileOutputStream fileOut = new FileOutputStream("person.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut)) { out.writeObject(person); // 序列化对象 System.out.println("对象已成功序列化并保存到 person.ser"); } catch (Exception e) { e.printStackTrace(); } }}import java.io.FileInputStream;import java.io.ObjectInputStream;public class DeserializeExample { public static void main(String[] args) { Person person = null; try (FileInputStream fileIn = new FileInputStream("person.ser"); ObjectInputStream in = new ObjectInputStream(fileIn)) { person = (Person) in.readObject(); // 反序列化对象 System.out.println("反序列化成功:" + person); } catch (Exception e) { e.printStackTrace(); } }}transient 修饰的字段会被跳过。Serializable,其字段不会被序列化(除非子类处理)。static)字段不属于对象状态,不会被序列化。ClassNotFoundException。通过本教程,你已经掌握了 Java序列化 的基本原理和使用方法。记住关键点:实现 Serializable 接口、使用 ObjectOutputStream 和 ObjectInputStream、注意 serialVersionUID 和 transient 字段。这些知识是构建健壮Java应用的基础,尤其在涉及 Java IO流 和数据持久化的场景中。
现在,你可以尝试自己编写一个可序列化的类,并完成保存和读取操作。实践是最好的老师!
本文由主机测评网于2025-12-01发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025121860.html