CONTENTS | PREV | NEXT Java Object Serialization Specification

6.2 Stream Elements

A basic structure is needed to represent objects in a stream. Each attribute of the object needs to be represented: its classes, its fields, and data written and later read by class-specific methods. The representation of objects in the stream can be described with a grammar. There are special representations for null objects, new objects, classes, arrays, strings, and back references to any object already in the stream. Each object written to the stream is assigned a handle that is used to refer back to the object. Handles are assigned sequentially starting from 0x7E0000. The handles restart at 0x7E0000 when the stream is reset.

A class object is represented by its ObjectStreamClass object.

An ObjectStreamClass object is represented by the following:

Strings are represented by their UTF encoding. Note that the current specification and implementation of the modified UTF restricts the total length of the encoded string to 65535 characters.

Arrays are represented by the following:

New objects in the stream are represented by the following:

All primitive data written by classes is buffered and wrapped in block-data records, regardless if the data is written to the stream within a writeObject method or written directly to the stream from outside a writeObject method. This data can only be read by the corresponding readObject methods or be read directly from the stream. Objects written by the writeObject method terminate any previous block-data record and are written either as regular objects or null or back references, as appropriate. The block-data records allow error recovery to discard any optional data. When called from within a class, the stream can discard any data or objects until the endBlockData.

Copyright © 1997-1998 Sun Microsystems, Inc. All Rights Reserved.