- 所有超接口:
-
Serializable
- 所有已知实现类:
-
DataFlavor
,MLet
,PrivateMLet
只有 Externalizable 实例的类标识写入序列化流,类有责任保存和恢复其实例的内容。Externalizable 接口的 writeExternal 和 readExternal 方法由类实现,以便类完全控制对象及其超类型的流的格式和内容。这些方法必须明确与超类型协调以保存其状态。这些方法取代了 writeObject 和 readObject 方法的自定义实现。
对象序列化使用 Serializable 和 Externalizable 接口。对象持久性机制也可以使用它们。要存储的每个对象都会检查是否实现了 Externalizable 接口。如果对象支持 Externalizable,则调用 writeExternal 方法。如果对象不支持 Externalizable 但实现了 Serializable,则使用 ObjectOutputStream 保存对象。
当重建 Externalizable 对象时,将使用公共无参构造函数创建一个实例,然后调用 readExternal 方法。Serializable 对象通过从 ObjectInputStream 中读取它们来恢复。
Externalizable 实例可以通过 Serializable 接口中记录的 writeReplace 和 readResolve 方法指定替换对象。
对象序列化使用 Serializable 和 Externalizable 接口。对象持久性机制也可以使用它们。要存储的每个对象都会检查是否实现了 Externalizable 接口。如果对象支持 Externalizable,则调用 writeExternal 方法。如果对象不支持 Externalizable 但实现了 Serializable,则使用 ObjectOutputStream 保存对象。
当重建 Externalizable 对象时,将使用公共无参构造函数创建一个实例,然后调用 readExternal 方法。Serializable 对象通过从 ObjectInputStream 中读取它们来恢复。
Externalizable 实例可以通过 Serializable 接口中记录的 writeReplace 和 readResolve 方法指定替换对象。
- 自 JDK 版本:
- 1.1
- 参见:
-
Method Summary
Modifier and TypeMethodDescriptionvoid
对象通过实现 readExternal 方法来恢复其内容,通过调用 DataInput 的方法读取原始类型,通过 readObject 读取对象、字符串和数组。void
对象通过实现 writeExternal 方法来保存其内容,通过调用 DataOutput 的方法保存其原始值,或者调用 ObjectOutput 的 writeObject 方法保存对象、字符串和数组。
-
Method Details
-
writeExternal
对象通过实现 writeExternal 方法来保存其内容,通过调用 DataOutput 的方法保存其原始值,或者调用 ObjectOutput 的 writeObject 方法保存对象、字符串和数组。- 参数:
-
out
- 要将对象写入的流 - 抛出:
-
IOException
- 包括可能发生的任何 I/O 异常
-
readExternal
对象通过实现 readExternal 方法来恢复其内容,通过调用 DataInput 的方法读取原始类型,通过 readObject 读取对象、字符串和数组。readExternal 方法必须按照 writeExternal 写入的相同顺序和相同类型读取值。- 参数:
-
in
- 用于从中读取数据以恢复对象的流 - 抛出:
-
IOException
- 如果发生 I/O 错误 -
ClassNotFoundException
- 如果找不到正在恢复的对象的类。
-