java.io
Interface Externalizable

All Superinterfaces:
Serializable sample code for java.io.Serializable definition code for java.io.Serializable
All Known Subinterfaces:
RemoteRef sample code for java.rmi.server.RemoteRef definition code for java.rmi.server.RemoteRef , ServerRef sample code for java.rmi.server.ServerRef definition code for java.rmi.server.ServerRef
All Known Implementing Classes:
DataFlavor sample code for java.awt.datatransfer.DataFlavor definition code for java.awt.datatransfer.DataFlavor , MLet sample code for javax.management.loading.MLet definition code for javax.management.loading.MLet , PrivateMLet sample code for javax.management.loading.PrivateMLet definition code for javax.management.loading.PrivateMLet

public interface Externalizable
extends Serializable sample code for java.io.Serializable definition code for java.io.Serializable

Only the identity of the class of an Externalizable instance is written in the serialization stream and it is the responsibility of the class to save and restore the contents of its instances. The writeExternal and readExternal methods of the Externalizable interface 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. These methods supersede customized implementations of writeObject and readObject methods.
Object Serialization uses the Serializable and Externalizable interfaces. Object persistence mechanisms can use them as well. Each object to be stored is tested for the Externalizable interface. If the object supports Externalizable, the writeExternal method is called. If the object does not support Externalizable and does implement Serializable, the object is saved using ObjectOutputStream.
When an Externalizable object is reconstructed, an instance is created using the public no-arg constructor, then the readExternal method called. Serializable objects are restored by reading them from an ObjectInputStream.
An Externalizable instance can designate a substitution object via the writeReplace and readResolve methods documented in the Serializable interface.

Since:
JDK1.1
See Also:
ObjectOutputStream sample code for java.io.ObjectOutputStream definition code for java.io.ObjectOutputStream , ObjectInputStream sample code for java.io.ObjectInputStream definition code for java.io.ObjectInputStream , ObjectOutput sample code for java.io.ObjectOutput definition code for java.io.ObjectOutput , ObjectInput sample code for java.io.ObjectInput definition code for java.io.ObjectInput , Serializable sample code for java.io.Serializable definition code for java.io.Serializable

Method Summary
 void readExternal sample code for java.io.Externalizable.readExternal(java.io.ObjectInput) definition code for java.io.Externalizable.readExternal(java.io.ObjectInput) (ObjectInput sample code for java.io.ObjectInput definition code for java.io.ObjectInput  in)
          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.
 void writeExternal sample code for java.io.Externalizable.writeExternal(java.io.ObjectOutput) definition code for java.io.Externalizable.writeExternal(java.io.ObjectOutput) (ObjectOutput sample code for java.io.ObjectOutput definition code for java.io.ObjectOutput  out)
          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.
 

Method Detail

writeExternal sample code for java.io.Externalizable.writeExternal(java.io.ObjectOutput) definition code for java.io.Externalizable.writeExternal(java.io.ObjectOutput)

void writeExternal(ObjectOutput sample code for java.io.ObjectOutput definition code for java.io.ObjectOutput  out)
                   throws IOException sample code for java.io.IOException definition code for java.io.IOException 
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.

Parameters:
out - the stream to write the object to
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - Includes any I/O exceptions that may occur

readExternal sample code for java.io.Externalizable.readExternal(java.io.ObjectInput) definition code for java.io.Externalizable.readExternal(java.io.ObjectInput)

void readExternal(ObjectInput sample code for java.io.ObjectInput definition code for java.io.ObjectInput  in)
                  throws IOException sample code for java.io.IOException definition code for java.io.IOException ,
                         ClassNotFoundException sample code for java.lang.ClassNotFoundException definition code for java.lang.ClassNotFoundException 
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.

Parameters:
in - the stream to read data from in order to restore the object
Throws:
IOException sample code for java.io.IOException definition code for java.io.IOException - if I/O errors occur
ClassNotFoundException sample code for java.lang.ClassNotFoundException definition code for java.lang.ClassNotFoundException - If the class for an object being restored cannot be found.