This interface defines the methods that must be implemented by an object that wants complete control over the way it is serialized. The writeExternal() and readExternal() methods should be implemented to write and read object data in some arbitrary format, using the methods of the DataOutput and DataInput objects. Externalizable objects must serialize their own fields, and are also responsible for serializing the fields of their superclasses.
Most objects do not need to define a custom output format and can use the Serializable interface instead of Externalizable for serialization.
public abstract interface Externalizable extends Serializable { // Public Instance Methods public abstract void readExternal(ObjectInput in) throws IOException, ClassNotFoundException; public abstract void writeExternal(ObjectOutput out) throws IOException; }