当前位置:首页 > Java

java如何对象序列化

2026-04-09 05:09:44Java

Java 对象序列化方法

实现 Serializable 接口

需要序列化的类必须实现 java.io.Serializable 接口。该接口是一个标记接口,没有需要实现的方法。

public class Person implements Serializable {
    private String name;
    private int age;
    // 构造方法、getter和setter省略
}

使用 ObjectOutputStream 序列化对象

通过 ObjectOutputStream 将对象写入文件或字节流。

try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
    Person person = new Person("Alice", 30);
    oos.writeObject(person);
} catch (IOException e) {
    e.printStackTrace();
}

使用 ObjectInputStream 反序列化对象

通过 ObjectInputStream 从文件或字节流中恢复对象。

try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
    Person restoredPerson = (Person) ois.readObject();
    System.out.println(restoredPerson.getName()); // 输出: Alice
} catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
}

自定义序列化行为(可选)

通过实现 writeObjectreadObject 方法控制序列化过程。

private void writeObject(ObjectOutputStream out) throws IOException {
    out.defaultWriteObject(); // 默认序列化
    // 自定义逻辑
}

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
    in.defaultReadObject(); // 默认反序列化
    // 自定义逻辑
}

处理 transient 字段

标记为 transient 的字段不会被序列化。

private transient String password; // 该字段不会参与序列化

版本控制 serialVersionUID

显式声明 serialVersionUID 以避免版本不一致导致的异常。

java如何对象序列化

private static final long serialVersionUID = 1L;

注意事项

  • 序列化对象的所有非静态和非 transient 字段必须可序列化(基本类型或实现 Serializable)。
  • 静态字段不会被序列化。
  • 反序列化时需确保类路径中有原始类的定义。
  • 对于敏感数据,建议实现 Externalizable 接口或使用加密。

标签: 对象序列化
分享给朋友:

相关文章

vue对象监听如何实现

vue对象监听如何实现

Vue 对象监听实现方法 Vue 提供了多种方式监听对象的变化,以下是常见的实现方法: 使用 watch 选项 在 Vue 实例中通过 watch 选项监听对象变化: new Vue({…

html中的对象react如何获取

html中的对象react如何获取

React 中获取 DOM 对象的方法 在 React 中,可以通过 ref 来获取 DOM 对象或组件实例。以下是几种常见的方式: 使用 useRef Hook(函数组件推荐) impo…

react如何将当前对象传过去

react如何将当前对象传过去

传递当前对象的常见方法 通过函数参数传递 在事件处理或函数调用时,直接将当前对象作为参数传递。例如,在React中处理点击事件时,可以通过箭头函数或bind方法传递当前DOM元素或组件实例。 <…

jquery序列化

jquery序列化

jQuery 序列化方法 jQuery 提供了多种序列化表单或对象的方法,主要用于将数据转换为字符串格式,便于传输或存储。 serialize() 将表单元素转换为 URL 编码的字符串,适…

jquery循环遍历对象

jquery循环遍历对象

jQuery 遍历对象的方法 在 jQuery 中,可以使用多种方式遍历对象或集合。以下是几种常见的遍历方法: 使用 $.each() 遍历对象或数组 $.each() 是 jQuery 提供的通用…

jquery根据id获取对象

jquery根据id获取对象

使用jQuery根据ID获取对象的方法 在jQuery中,可以通过ID选择器快速获取DOM元素。ID选择器使用#符号加上元素的ID名称来定位元素。 语法示例 var element = $…