Externalization allows a class to specify the methods to be used to
write the object's contents to a stream and to read them back. The
Externalizable interface's writeExternal and readExternal methods
are implemented by a class to
give the class complete control over the format and contents of the
stream for an object and its supertypes. These methods must explicitly
coordinate with the supertype to save its state.
Object Serialization uses the Serializable and Externalizable
interfaces. Object persistence mechanisms may use them also. Each
object to be stored is tested for the Externalizable interface. If
the object supports it, the writeExternal method is called. If the
object does not support Externalizable and does implement
Serializable the object should be saved using
ObjectOutputStream. When an Externalizable object is to be
reconstructed, an instance is created using the public no-arg
constructor and the readExternal method called. Serializable
objects are restored by reading them from an ObjectInputStream.
The object implements the readExternal method to restore its
contents by calling the methods of DataInput for primitive
types and readObject for objects, strings and arrays.
The object implements the writeExternal method to save its contents
by calling the methods of DataOutput for its primitive values or
calling the writeObject method of ObjectOutput for objects, strings
and arrays.
The object implements the writeExternal method to save its contents
by calling the methods of DataOutput for its primitive values or
calling the writeObject method of ObjectOutput for objects, strings
and arrays.
The object implements the readExternal method to restore its
contents by calling the methods of DataInput for primitive
types and readObject for objects, strings and arrays. The
readExternal method must read the values in the same sequence
and with the same types as were written by writeExternal.