CONTENTS | PREV | NEXT | Java Object Serialization Specification |
For Serializable and Externalizable classes, thereadResolve
method allows a class to replace/resolve the object read from the stream before it is returned to the caller. By implementing thereadResolve
method, a class can directly control the types and instances of its own instances being deserialized. The method is defined as follows:ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;ThereadResolve
method is called whenObjectInputStream
has read an object from the stream and is preparing to return it to the caller.ObjectInputStream
checks whether the class of the object defines thereadResolve
method. If the method is defined, thereadResolve
method is called to allow the object in the stream to designate the object to be returned. The object returned should be of a type that is compatible with all uses. If it is not compatible, aClassCastException
will be thrown when the type mismatch is discovered.For example, a
Symbol
class could be created for which only a single instance of each symbol binding existed within a virtual machine. ThereadResolve
method would be implemented to determine if that symbol was already defined and substitute the preexisting equivalent
Symbol
object to maintain the identity constraint. In this way the uniqueness ofSymbol
objects can be maintained across serialization.