ObjectStreamConstants (Java SE 26 & JDK 26)
Description: declaration: module: java.base, package: java.io, interface: ObjectStreamConstants
Keywords: java.io.ObjectStreamConstants interface

# Interface ObjectStreamConstants

All Known Implementing Classes:
  `ObjectInputStream, ObjectOutputStream`

public interface ObjectStreamConstants
Constants written into the Object Serialization Stream.

Since:
  1.1

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `baseWireHandle`
  First wire handle to be assigned.
  `static final int`
  `PROTOCOL_VERSION_1`
  A Stream Protocol Version.
  `static final int`
  `PROTOCOL_VERSION_2`
  A Stream Protocol Version.
  `static final byte`
  `SC_BLOCK_DATA`
  Bit mask for ObjectStreamClass flag.
  `static final byte`
  `SC_ENUM`
  Bit mask for ObjectStreamClass flag.
  `static final byte`
  `SC_EXTERNALIZABLE`
  Bit mask for ObjectStreamClass flag.
  `static final byte`
  `SC_SERIALIZABLE`
  Bit mask for ObjectStreamClass flag.
  `static final byte`
  `SC_WRITE_METHOD`
  Bit mask for ObjectStreamClass flag.
  `static final SerializablePermission`
  `SERIAL_FILTER_PERMISSION`
  Enable setting the system-wide serial filter.
  `static final short`
  `STREAM_MAGIC`
  Magic number that is written to the stream header.
  `static final short`
  `STREAM_VERSION`
  Version number that is written to the stream header.
  `static final SerializablePermission`
  `SUBCLASS_IMPLEMENTATION_PERMISSION`
  Enable overriding of readObject and writeObject.
  `static final SerializablePermission`
  `SUBSTITUTION_PERMISSION`
  Enable substitution of one object for another during serialization/deserialization.
  `static final byte`
  `TC_ARRAY`
  new Array.
  `static final byte`
  `TC_BASE`
  First tag value.
  `static final byte`
  `TC_BLOCKDATA`
  Block of optional data.
  `static final byte`
  `TC_BLOCKDATALONG`
  long Block data.
  `static final byte`
  `TC_CLASS`
  Reference to Class.
  `static final byte`
  `TC_CLASSDESC`
  new Class Descriptor.
  `static final byte`
  `TC_ENDBLOCKDATA`
  End of optional block data blocks for an object.
  `static final byte`
  `TC_ENUM`
  new Enum constant.
  `static final byte`
  `TC_EXCEPTION`
  Exception during write.
  `static final byte`
  `TC_LONGSTRING`
  Long string.
  `static final byte`
  `TC_MAX`
  Last tag value.
  `static final byte`
  `TC_NULL`
  Null object reference.
  `static final byte`
  `TC_OBJECT`
  new Object.
  `static final byte`
  `TC_PROXYCLASSDESC`
  new Proxy Class Descriptor.
  `static final byte`
  `TC_REFERENCE`
  Reference to an object already written into the stream.
  `static final byte`
  `TC_RESET`
  Reset stream context.
  `static final byte`
  `TC_STRING`
  new String.

- ## Field Details

  - ### STREAM_MAGIC

    static final short STREAM_MAGIC
    Magic number that is written to the stream header.
    See Also:
      - Constant Field Values

  - ### STREAM_VERSION

    static final short STREAM_VERSION
    Version number that is written to the stream header.
    See Also:
      - Constant Field Values

  - ### TC_BASE

    static final byte TC_BASE
    First tag value.
    See Also:
      - Constant Field Values

  - ### TC_NULL

    static final byte TC_NULL
    Null object reference.
    See Also:
      - Constant Field Values

  - ### TC_REFERENCE

    static final byte TC_REFERENCE
    Reference to an object already written into the stream.
    See Also:
      - Constant Field Values

  - ### TC_CLASSDESC

    static final byte TC_CLASSDESC
    new Class Descriptor.
    See Also:
      - Constant Field Values

  - ### TC_OBJECT

    static final byte TC_OBJECT
    new Object.
    See Also:
      - Constant Field Values

  - ### TC_STRING

    static final byte TC_STRING
    new String.
    See Also:
      - Constant Field Values

  - ### TC_ARRAY

    static final byte TC_ARRAY
    new Array.
    See Also:
      - Constant Field Values

  - ### TC_CLASS

    static final byte TC_CLASS
    Reference to Class.
    See Also:
      - Constant Field Values

  - ### TC_BLOCKDATA

    static final byte TC_BLOCKDATA
    Block of optional data. Byte following tag indicates number of bytes in this block data.
    See Also:
      - Constant Field Values

  - ### TC_ENDBLOCKDATA

    static final byte TC_ENDBLOCKDATA
    End of optional block data blocks for an object.
    See Also:
      - Constant Field Values

  - ### TC_RESET

    static final byte TC_RESET
    Reset stream context. All handles written into stream are reset.
    See Also:
      - Constant Field Values

  - ### TC_BLOCKDATALONG

    static final byte TC_BLOCKDATALONG
    long Block data. The long following the tag indicates the number of bytes in this block data.
    See Also:
      - Constant Field Values

  - ### TC_EXCEPTION

    static final byte TC_EXCEPTION
    Exception during write.
    See Also:
      - Constant Field Values

  - ### TC_LONGSTRING

    static final byte TC_LONGSTRING
    Long string.
    See Also:
      - Constant Field Values

  - ### TC_PROXYCLASSDESC

    static final byte TC_PROXYCLASSDESC
    new Proxy Class Descriptor.
    See Also:
      - Constant Field Values

  - ### TC_ENUM

    static final byte TC_ENUM
    new Enum constant.
    Since:
      1.5
    See Also:
      - Constant Field Values

  - ### TC_MAX

    static final byte TC_MAX
    Last tag value.
    See Also:
      - Constant Field Values

  - ### baseWireHandle

    static final int baseWireHandle
    First wire handle to be assigned.
    See Also:
      - Constant Field Values

  - ### SC_WRITE_METHOD

    static final byte SC_WRITE_METHOD
    Bit mask for ObjectStreamClass flag. Indicates a Serializable class defines its own writeObject method.
    See Also:
      - Constant Field Values

  - ### SC_BLOCK_DATA

    static final byte SC_BLOCK_DATA
    Bit mask for ObjectStreamClass flag. Indicates Externalizable data written in Block Data mode. Added for PROTOCOL_VERSION_2.
    Since:
      1.2
    See Also:
      - `PROTOCOL_VERSION_2`
      - Constant Field Values

  - ### SC_SERIALIZABLE

    static final byte SC_SERIALIZABLE
    Bit mask for ObjectStreamClass flag. Indicates class is Serializable.
    See Also:
      - Constant Field Values

  - ### SC_EXTERNALIZABLE

    static final byte SC_EXTERNALIZABLE
    Bit mask for ObjectStreamClass flag. Indicates class is Externalizable.
    See Also:
      - Constant Field Values

  - ### SC_ENUM

    static final byte SC_ENUM
    Bit mask for ObjectStreamClass flag. Indicates class is an enum type.
    Since:
      1.5
    See Also:
      - Constant Field Values

  - ### SUBSTITUTION_PERMISSION

    static final SerializablePermission SUBSTITUTION_PERMISSION
    Enable substitution of one object for another during serialization/deserialization.
    Since:
      1.2
    See Also:
      - `ObjectOutputStream.enableReplaceObject(boolean)`
      - `ObjectInputStream.enableResolveObject(boolean)`

  - ### SUBCLASS_IMPLEMENTATION_PERMISSION

    static final SerializablePermission SUBCLASS_IMPLEMENTATION_PERMISSION
    Enable overriding of readObject and writeObject.
    Since:
      1.2
    See Also:
      - `ObjectOutputStream.writeObjectOverride(Object)`
      - `ObjectInputStream.readObjectOverride()`

  - ### SERIAL_FILTER_PERMISSION

    static final SerializablePermission SERIAL_FILTER_PERMISSION
    Enable setting the system-wide serial filter.
    Since:
      9
    See Also:
      - `ObjectInputFilter.Config.setSerialFilter(ObjectInputFilter)`

  - ### PROTOCOL_VERSION_1

    static final int PROTOCOL_VERSION_1
    A Stream Protocol Version.

    All externalizable data is written in JDK 1.1 external data format after calling this method. This version is needed to write streams containing Externalizable data that can be read by pre-JDK 1.1.6 JVMs.

    Since:
      1.2
    See Also:
      - `ObjectOutputStream.useProtocolVersion(int)`
      - Constant Field Values

  - ### PROTOCOL_VERSION_2

    static final int PROTOCOL_VERSION_2
    A Stream Protocol Version.

    This protocol is written by JVM 1.2.

    Externalizable data is written in block data mode and is terminated with TC_ENDBLOCKDATA. Externalizable class descriptor flags has SC_BLOCK_DATA enabled. JVM 1.1.6 and greater can read this format change.

    Enables writing a nonSerializable class descriptor into the stream. The serialVersionUID of a nonSerializable class is set to 0L.

    Since:
      1.2
    See Also:
      - `ObjectOutputStream.useProtocolVersion(int)`
      - `SC_BLOCK_DATA`
      - Constant Field Values