java.io

Interface Externalizable

All Superinterfaces:
Serializable
Known Subinterfaces:
RemoteRef, ServerRef, StepInterpolator
Known Implementing Classes:
AbstractStepInterpolator, BlockDiskElementDescriptor, DataFlavor, DummyStepInterpolator, JRAbstractLRUVirtualizer.Cache.LRUScanMap, LRUMap, MLet, PrivateMLet, ProxyRef, SequencedHashMap

public interface Externalizable
extends 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, ObjectInputStream, ObjectOutput, ObjectInput, Serializable, Serialized Form

Method Summary

void
readExternal(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(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 Details

readExternal

public void readExternal(ObjectInput in)
            throws IOException,
                   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 - if I/O errors occur
ClassNotFoundException - If the class for an object being restored cannot be found.
Usages and Demos :

View More Examples of readExternal(ObjectInput in)
   1: import java.io.ObjectOutput;
   2: import java.io.Externalizable;
   3: import java.util.*;
   4:         ...
   5: 
   6:     public static Externalizable read(ObjectInput in)
   7:         throws java.io.IOException 
   8:         ...
   9:                 extclass = mConfigurator.get(magic);
  10:             Externalizable newinstance = (Externalizable)extclass.newInstance();
  11:         ...
  12:             newinstance.readExternal(in);

View Full Code Here
   1: 
   2: import java.io.Externalizable;
   3: import java.io.IOException;
   4:         ...
   5: 
   6:     public static Externalizable read(ObjectInput in) throws IOException {
   7:         try {
   8:         ...
   9:                 extclass=mConfigurator.get(magic);
  10:             Externalizable newinstance=(Externalizable)extclass.newInstance();
  11:         ...
  12:             newinstance.readExternal(in);

View Full Code Here
   1: 
   2: import java.io.Externalizable;
   3: import java.io.IOException;
   4:         ...
   5:     public boolean canConvert(Class type) {
   6:         return Externalizable.class.isAssignableFrom(type);
   7:     }
   8:         ...
   9:         try {
  10:             Externalizable externalizable = (Externalizable) source;
  11:             CustomObjectOutputStream.StreamCallback callback = new CustomObjectOutputStream.StreamCallback() {
  12:         ...
  13:             CustomObjectInputStream objectInput = CustomObjectInputStream.getInstance(context, callback);
  14:             externalizable.readExternal(objectInput);

View Full Code Here
   1: import java.io.ByteArrayInputStream;
   2: import java.io.Externalizable;
   3: import java.io.IOException;
   4:         ...
   5:                 to = new Node();
   6:                 ((Node)to).readExternal(objectInput);
   7:             }
   8:         ...
   9:             from = new Node();
  10:             ((Node)from).readExternal(objectInput);
  11:         }
  12:         ...
  13:         {
  14:             Externalizable template = getTemplate(type);

View Full Code Here
   1: 
   2: import java.io.Externalizable;
   3: import java.io.ObjectInput;
   4:         ...
   5: 
   6: class SequencedHashMap implements Map, Cloneable, Externalizable {
   7: 
   8:   private static class Entry implements Map.Entry {

View Full Code Here

writeExternal

public void writeExternal(ObjectOutput out)
            throws 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 - Includes any I/O exceptions that may occur
Usages and Demos :

View More Examples of writeExternal(ObjectOutput out)
   1: 
   2: import java.io.Externalizable;
   3: import java.io.IOException;
   4:         ...
   5:     public boolean canConvert(Class type) {
   6:         return Externalizable.class.isAssignableFrom(type);
   7:     }
   8:         ...
   9:         try {
  10:             Externalizable externalizable = (Externalizable) source;
  11:             CustomObjectOutputStream.StreamCallback callback = new CustomObjectOutputStream.StreamCallback() {
  12:         ...
  13:             CustomObjectOutputStream objectOutput = CustomObjectOutputStream.getInstance(context, callback);
  14:             externalizable.writeExternal(objectOutput);

View Full Code Here