模块  java.base
软件包  java.io

Interface Externalizable

  • All Superinterfaces:
    Serializable
    All Known Subinterfaces:
    RemoteRefServerRef
    所有已知实现类:
    DataFlavorMLetPrivateMLet

    public interface Externalizable
    extends Serializable
    只有Externalizable实例的类的标识才会写入序列化流中,并且该类负责保存和恢复其实例的内容。 Externalizable接口的writeExternal和readExternal方法由类实现,以使类完全控制对象及其超类型的流的格式和内容。 这些方法必须明确地与超类型协调以保存其状态。 这些方法取代了writeObject和readObject方法的自定义实现。
    对象序列化使用Serializable和Externalizable接口。 对象持久性机制也可以使用它们。 要为Externalizable接口测试要存储的每个对象。 如果对象支持Externalizable,则调用writeExternal方法。 如果对象不支持Externalizable并且实现Serializable,则使用ObjectOutputStream保存对象。
    重构Externalizable对象时,使用public no-arg构造函数创建实例,然后调用readExternal方法。 可序列化对象通过从ObjectInputStream中读取来恢复。
    Externalizable实例可以通过Serializable接口中记录的writeReplace和readResolve方法指定替换对象。
    从以下版本开始:
    1.1
    另请参见:
    ObjectOutputStreamObjectInputStreamObjectOutputObjectInputSerializable
    • 方法摘要

      所有方法  实例方法 抽象方法 
      变量和类型 方法 描述
      void readExternal​(ObjectInput in)
      该对象实现了readExternal方法,通过为原始类型调用DataInput方法并为对象,字符串和数组调用readObject来恢复其内容。
      void writeExternal​(ObjectOutput out)
      该对象实现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 - 如果找不到要还原的对象的类。