public interface Externalizable
implements Serializable
java.io.Externalizable |
只有Externalizable实例的类的标识才被写入序列化流中,并且该类负责保存和恢复其实例的内容。 Externalizable接口的writeExternal和readExternal方法是通过一个类来实现的,它使类可以完全控制一个对象及其超类的流的格式和内容。 这些方法必须显式协调超类型以保存其状态。 这些方法取代了writeObject和readObject方法的自定义实现。
对象序列化使用Serializable和Externalizable接口。 对象持久性机制也可以使用它们。 要存储的每个对象都针对Externalizable接口进行测试。 如果对象支持Externalizable,则调用writeExternal方法。 如果对象不支持Externalizable并且没有实现Serializable,则使用ObjectOutputStream保存该对象。
当重构Externalizable对象时,将使用public no-arg构造函数创建实例,然后调用readExternal方法。 可序列化的对象通过从ObjectInputStream中读取来恢复。
Externalizable实例可以通过Serializable接口中记录的writeReplace和readResolve方法指定替换对象。
Public methods |
|
---|---|
abstract void |
readExternal(ObjectInput in) 该对象实现readExternal方法,通过调用基本类型的DataInput方法和对象,字符串和数组的readObject方法来恢复其内容。 |
abstract void |
writeExternal(ObjectOutput out) 该对象实现writeExternal方法,通过调用DataOutput的方法为其基元值或调用对象,字符串和数组的ObjectOutput的writeObject方法来保存其内容。 |
void readExternal (ObjectInput in)
该对象实现readExternal方法,通过调用基本类型的DataInput方法和对象,字符串和数组的readObject方法来恢复其内容。 readExternal方法必须以与writeExternal写入的相同顺序和相同类型读取值。
Parameters | |
---|---|
in |
ObjectInput : the stream to read data from in order to restore the object |
Throws | |
---|---|
IOException |
if I/O errors occur |
ClassNotFoundException |
If the class for an object being restored cannot be found. |
void writeExternal (ObjectOutput out)
该对象实现writeExternal方法,通过调用DataOutput的方法为其基元值或调用对象,字符串和数组的ObjectOutput的writeObject方法来保存其内容。
Parameters | |
---|---|
out |
ObjectOutput : the stream to write the object to |
Throws | |
---|---|
IOException |
Includes any I/O exceptions that may occur |