| CONTENTS | PREV | NEXT | Java Object Serialization Specification |
TheObjectStreamClassprovides information about classes that are saved in a Serialization stream. The descriptor provides the fully-qualified name of the class and its serialization version UID. ASerialVersionUIDidentifies the unique original class version for which this class is capable of writing streams and from which it can read.package java.io; public class ObjectStreamClass { public static ObjectStreamClass lookup(Class cl); public String getName(); public Class forClass(); public ObjectStreamField[] getFields(); public long getSerialVersionUID(); public String toString(); }Thelookupmethod returns theObjectStreamClassdescriptor for the specified class in the virtual machine. If the class has definedserialVersionUIDit is retrieved from the class. If theserialVersionUIDis not defined by the class, it is computed from the definition of the class in the virtual machine. If the specified class is not serializable or externalizable, null is returned.The
getNamemethod returns the fully-qualified name of the class. The class name is saved in the stream and is used when the class must be loaded.The
forClassmethod returns theClassin the local virtual machine if one was found byObjectInputStream.resolveClassmethod. Otherwise, it returns null.The
getFieldsmethod returns an array ofObjectStreamFieldobjects that represent the serializable fields of this class.The
getSerialVersionUIDmethod returns theserialVersionUIDof this class. Refer to Section 4.4, "Stream Unique Identifiers." If not specified by the class, the value returned is a hash computed from the class's name, interfaces, methods, and fields using the Secure Hash Algorithm (SHA) as defined by the National Institute of Standards.The
toStringmethod returns a printable representation of the class descriptor including the name of the class and theserialVersionUID.When an
ObjectStreamClassinstance is written to the stream, it writes the class name andserialVersionUID, flags, and the number of fields. Depending on the class, additional information may be written:
- For non-serializable classes, the number of fields is always zero. Neither the serializable nor the externalizable flag bits are set.
- For serializable classes, the serializable flag is set, the number of fields counts the number of serializable fields and is followed by a descriptor for each serializable field. The descriptors are written in canonical order. The descriptors for primitive typed fields are written first sorted by field name followed by descriptors for the object typed fields sorted by field name. The names are sorted using
String.compareTo. The protocol describes the format.- For externalizable classes, flags includes the externalizable flag, and the number of fields is always zero.