Module java.base
Package java.io

Interface Externalizable

所有超接口:
Serializable
所有已知子接口:
RemoteRef, ServerRef
所有已知实现类:
DataFlavor, MLet, PrivateMLet

public interface Externalizable extends Serializable
只有 Externalizable 实例的类标识写入序列化流,类有责任保存和恢复其实例的内容。Externalizable 接口的 writeExternal 和 readExternal 方法由类实现,以便类完全控制对象及其超类型的流的格式和内容。这些方法必须明确与超类型协调以保存其状态。这些方法取代了 writeObject 和 readObject 方法的自定义实现。
对象序列化使用 Serializable 和 Externalizable 接口。对象持久性机制也可以使用它们。要存储的每个对象都会检查是否实现了 Externalizable 接口。如果对象支持 Externalizable,则调用 writeExternal 方法。如果对象不支持 Externalizable 但实现了 Serializable,则使用 ObjectOutputStream 保存对象。
当重建 Externalizable 对象时,将使用公共无参构造函数创建一个实例,然后调用 readExternal 方法。Serializable 对象通过从 ObjectInputStream 中读取它们来恢复。
Externalizable 实例可以通过 Serializable 接口中记录的 writeReplace 和 readResolve 方法指定替换对象。
自 JDK 版本:
1.1
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    对象通过实现 readExternal 方法来恢复其内容,通过调用 DataInput 的方法读取原始类型,通过 readObject 读取对象、字符串和数组。
    void
    对象通过实现 writeExternal 方法来保存其内容,通过调用 DataOutput 的方法保存其原始值,或者调用 ObjectOutput 的 writeObject 方法保存对象、字符串和数组。
  • Method Details

    • writeExternal

      void writeExternal(ObjectOutput out) throws IOException
      对象通过实现 writeExternal 方法来保存其内容,通过调用 DataOutput 的方法保存其原始值,或者调用 ObjectOutput 的 writeObject 方法保存对象、字符串和数组。
      参数:
      out - 要将对象写入的流
      抛出:
      IOException - 包括可能发生的任何 I/O 异常
    • readExternal

      void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      对象通过实现 readExternal 方法来恢复其内容,通过调用 DataInput 的方法读取原始类型,通过 readObject 读取对象、字符串和数组。readExternal 方法必须按照 writeExternal 写入的相同顺序和相同类型读取值。
      参数:
      in - 用于从中读取数据以恢复对象的流
      抛出:
      IOException - 如果发生 I/O 错误
      ClassNotFoundException - 如果找不到正在恢复的对象的类。