ObjectInputStream is used to deserialize objects, arrays, and other values from a stream that was previously created with an ObjectOutputStream. The readObject() method deserializes objects and arrays (which should then be cast to the appropriate type); various other methods are used to read primitive data values from the stream. Note that only objects that implement the Serializable interface or the Externalizable interface can be serialized and deserialized.
The defaultReadObject() method may only be called from the readObject() method of an object that is currently being deserialized. It allows an object to perform additional processing after deserializing itself. The registerValidation() method may also only be called from the readObject() method of an object being deserialized. It registers an ObjectInputValidation object (typically the object being deserialized) to be notified when a complete tree of objects has been deserialized and the original call to the readObject() method of the ObjectInputStream is about to return to its caller.
The remaining methods include miscellaneous stream manipulation methods and several protected methods for use by subclasses that want to customize the deserialization behavior of ObjectInputStream.
public class ObjectInputStream extends InputStream implements ObjectInput { // Public Constructor public ObjectInputStream(InputStream in) throws IOException, StreamCorruptedException; // Public Instance Methods public int available() throws IOException; // Overrides InputStream public void close() throws IOException; // Overrides InputStream public final void defaultReadObject() throws IOException, ClassNotFoundException, NotActiveException; public int read() throws IOException; // Defines InputStream public int read(byte[] data, int offset, int length) throws IOException; // Overrides InputStream public boolean readBoolean() throws IOException; // From DataInput public byte readByte() throws IOException; // From DataInput public char readChar() throws IOException; // From DataInput public double readDouble() throws IOException; // From DataInput public float readFloat() throws IOException; // From DataInput public void readFully(byte[] data) throws IOException; // From DataInput public void readFully(byte[] data, int offset, int size) throws IOException; // From DataInput public int readInt() throws IOException; // From DataInput public String readLine() throws IOException; // From DataInput public long readLong() throws IOException; // From DataInput public final Object readObject() throws OptionalDataException, public final Object readObject() 'u'ClassNotFoundException, IOException; // From ObjectInput public short readShort() throws IOException; // From DataInput public String readUTF() throws IOException; // From DataInput public int readUnsignedByte() throws IOException; // From DataInput public int readUnsignedShort() throws IOException; // From DataInput public synchronized void registerValidation(ObjectInputValidation obj, int prio) public synchronized void registerValidation'u'throws NotActiveException, InvalidObjectException; public int skipBytes(int len) throws IOException; // From DataInput // Protected Instance Methods protected final boolean enableResolveObject(boolean enable) throws SecurityException; protected void readStreamHeader() throws IOException, StreamCorruptedException; protected Class resolveClass(ObjectStreamClass v) throws IOException, ClassNotFoundException; protected Object resolveObject(Object obj) throws IOException; }
Object->InputStream->ObjectInputStream(ObjectInput(DataInput))