📜  Java ObjectInputStream类(1)

📅  最后修改于: 2023-12-03 14:42:15.555000             🧑  作者: Mango

Java ObjectInputStream类介绍

概述

ObjectInputStream类是Java标准库中的一部分,用于将对象的二进制表示形式转换回对象。它是Java I/O类库中与输入流相关的一部分,用于反序列化对象。

特点
  • ObjectInputStream类可以读取(反序列化)包含Java对象的输入流。
  • 它可以将对象的二进制流恢复为具体的对象。
  • 它提供了方法来读取基本数据类型、数组、String以及实现了Serializable接口的对象。
  • 它可以自动处理对象图的序列化和反序列化,即使对象图中包含循环引用或共享引用。
使用步骤

使用ObjectInputStream类进行对象反序列化的一般步骤如下:

  1. 创建一个FileInputStreamByteArrayInputStream对象来读取存储对象的字节流。
  2. 创建一个ObjectInputStream对象,并将步骤1中的输入流作为参数传入。
  3. 使用ObjectInputStreamreadObject()方法读取对象。
  4. 关闭ObjectInputStream和输入流。

以下是一个简单示例代码:

try {
    FileInputStream fileIn = new FileInputStream("object.ser");
    ObjectInputStream objectIn = new ObjectInputStream(fileIn);

    Object obj = objectIn.readObject();

    objectIn.close();
    fileIn.close();

    // 使用反序列化后的对象进行操作
    // ...

} catch (IOException | ClassNotFoundException e) {
    e.printStackTrace();
}
注意事项
  • 要想正确地反序列化一个对象,必须确保对应的类存在,并且类的序列化UID与序列化数据一致。否则,会抛出ClassNotFoundExceptionInvalidClassException异常。
  • 序列化和反序列化的类必须实现java.io.Serializable接口。
  • ObjectInputStream对象不是线程安全的,更适合在单线程环境下使用。

更多关于ObjectInputStream类的信息和用法,请参考Java官方文档