您的位置:首页 > 教育 > 培训 > Java 序列化与反序列化

Java 序列化与反序列化

2024/10/5 19:18:03 来源:https://blog.csdn.net/lw_jack/article/details/139814441  浏览:    关键词:Java 序列化与反序列化

Java 序列化是一种将对象的状态转换为字节流的机制,以便可以将该对象的状态保存到文件、数据库或通过网络传输。在反序列化过程中,这些字节流可以被重新转换为对象。序列化主要用于以下几种情况:

  1. 持久化存储:将对象的状态保存到文件或数据库,以便在以后恢复。
  2. 网络传输:在分布式系统中,通过网络传输对象时,需要将对象序列化为字节流。
  3. 深度克隆:通过序列化和反序列化,可以实现对象的深度克隆。
  4. 缓存:将对象序列化后存储到缓存中,以提高系统性能。

以下是一个简单的 Java 序列化示例代码:

序列化示例

import java.io.*;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;}@Overridepublic String toString() {return "Person{name='" + name + "', age=" + age + '}';}
}public class SerializationExample {public static void main(String[] args) {Person person = new Person("Alice", 30);// 序列化try (FileOutputStream fileOut = new FileOutputStream("person.ser");ObjectOutputStream out = new ObjectOutputStream(fileOut)) {out.writeObject(person);System.out.println("序列化后的对象保存到 person.ser 文件中");} catch (IOException i) {i.printStackTrace();}// 反序列化Person deserializedPerson = null;try (FileInputStream fileIn = new FileInputStream("person.ser");ObjectInputStream in = new ObjectInputStream(fileIn)) {deserializedPerson = (Person) in.readObject();} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}System.out.println("反序列化后的对象: " + deserializedPerson);}
}

代码说明

  1. Person 类:实现 Serializable 接口,这样该类的对象就可以被序列化。
  2. SerializationExample 类:包含 main 方法来演示序列化和反序列化。
    • 创建一个 Person 对象。
    • 使用 FileOutputStreamObjectOutputStream 将对象序列化到 person.ser 文件中。
    • 使用 FileInputStreamObjectInputStreamperson.ser 文件中反序列化对象。
    • 打印反序列化后的对象。

通过上述代码,展示了如何在 Java 中进行对象的序列化和反序列化操作。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com