在Java开发中,Java序列化是一个非常重要的概念。它允许我们将内存中的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; } // Getter 和 Setter 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{name='" + name + "', age=" + age + "}"; }} 注意:serialVersionUID 是一个版本控制ID。建议显式声明它,以避免因类结构变化导致反序列化失败。
接下来,我们使用 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,则其字段不会被序列化(除非子类手动处理)。Serializable 接口。通过本教程,你已经掌握了 Java序列化 的基本原理和实现方法。记住,核心是让类实现 Serializable 接口,并使用 Java IO流 中的 ObjectOutputStream 和 ObjectInputStream 来完成序列化与反序列化操作。这项技术在分布式系统、缓存机制和持久化存储中非常实用。
希望这篇关于 对象序列化 的入门教程能帮助你轻松上手!如有疑问,欢迎在评论区交流。
本文由主机测评网于2025-12-21发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251210821.html