One of the features of Example 10-3 is that it includes a version number in the serialization stream it writes. This is useful if the class evolves in the future and needs to use a new serialization format. The version number allows future versions of the class to recognize serialized objects written by this version of the class.
objects that are not
Externalizable, the Serialization API
handles versioning itself. When an object is serialized, some
information about the object’s class must obviously be serialized with
it, so that the correct class file can be loaded when the object is
deserialized. This information about the class is represented by the
java.io.ObjectStreamClass class. It
contains the fully qualified name of the class and a version number
for the class. The version number is very important because an early
version of a class may not be able to deserialize a serialized
instance created by a later version of the same class. The version
number for a class is a
long value. By default, the serialization mechanism creates a unique version number by computing a hash of the name of the class, the name of its superclass and any interfaces it implements, the name and type of its fields, and the name and type of its nonprivate methods. Thus, whenever you add a new method, change the name of a field, or make even minor modifications to the API or implementation of a class, its computed version number changes. When an object ...