模块 java.base
 java.io

接口 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 方法。可序列化对象通过从 ObjectInputStream 中读取来恢复。
Externalizable 实例可以通过 Serializable 接口中记录的 writeReplace 和 readResolve 方法指定替换对象。
自从:
1.1
参见:
  • 方法总结

    修饰符和类型
    方法
    描述
    void
    该对象实现了 readExternal 方法,通过调用基本类型的 DataInput 方法和对象、字符串和数组的 readObject 方法来恢复其内容。
    void
    对象实现 writeExternal 方法来保存它的内容,通过调用 DataOutput 的方法来保存它的原始值,或者调用 ObjectOutput 的 writeObject 方法来保存它的内容,对象、字符串和数组。
  • 方法详情

    • 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 - 如果找不到正在恢复的对象的类。