Class ObjectStreamClass

java.lang.Object
com.sun.corba.ee.impl.io.ObjectStreamClass
All Implemented Interfaces:
Serializable

public class ObjectStreamClass extends Object implements Serializable
A ObjectStreamClass describes a class that can be serialized to a stream or a class that was serialized to a stream. It contains the name and the serialVersionUID of the class.
The ObjectStreamClass for a specific class loaded in this Java VM can be found using the lookup method.
Since:
JDK1.1
Version:
ObjectStreamClass.java 1.17 99/06/07
See Also:
  • Field Details

    • DEBUG_SVUID

      private static final boolean DEBUG_SVUID
      See Also:
    • kDefaultUID

      public static final long kDefaultUID
      See Also:
    • isEnum

      private boolean isEnum
    • bridge

      private static final org.glassfish.pfl.basic.reflection.Bridge bridge
    • persistentFieldsValue

      private static final ObjectStreamClass.PersistentFieldsValue persistentFieldsValue
    • CLASS_MASK

      public static final int CLASS_MASK
      See Also:
    • FIELD_MASK

      public static final int FIELD_MASK
      See Also:
    • METHOD_MASK

      public static final int METHOD_MASK
      See Also:
    • descriptorFor

      private static final org.glassfish.pfl.basic.concurrent.SoftCache<Class<?>,ObjectStreamClass> descriptorFor
    • name

      private String name
    • superclass

      private ObjectStreamClass superclass
    • serializable

      private boolean serializable
    • externalizable

      private boolean externalizable
    • fields

      private ObjectStreamField[] fields
    • ofClass

      private Class<?> ofClass
    • forProxyClass

      boolean forProxyClass
    • suid

      private long suid
    • suidStr

      private String suidStr
    • actualSuid

      private long actualSuid
    • actualSuidStr

      private String actualSuidStr
    • primBytes

      int primBytes
    • objFields

      int objFields
    • initialized

      private boolean initialized
      Flag indicating whether or not this instance has successfully completed initialization. This is to try to fix bug 4373844. Working to move to reusing java.io.ObjectStreamClass for JDK 1.5.
    • lock

      private final Object lock
    • hasExternalizableBlockData

      private boolean hasExternalizableBlockData
    • writeObjectMethod

      private MethodHandle writeObjectMethod
    • readObjectMethod

      private MethodHandle readObjectMethod
    • writeReplaceObjectMethod

      private transient MethodHandle writeReplaceObjectMethod
    • readResolveObjectMethod

      private transient MethodHandle readResolveObjectMethod
    • cons

      private Constructor<?> cons
    • rmiiiopOptionalDataRepId

      private String rmiiiopOptionalDataRepId
      Beginning in Java to IDL ptc/02-01-12, RMI-IIOP has a stream format version 2 which puts a fake valuetype around a Serializable's optional custom data. This valuetype has a special repository ID made from the Serializable's information which we are pre-computing and storing here.
    • serialVersionUID

      private static final long serialVersionUID
      use serialVersionUID from JDK 1.1. for interoperability
      See Also:
    • NO_FIELDS

      public static final ObjectStreamField[] NO_FIELDS
      Set serialPersistentFields of a Serializable class to this value to denote that the class has no Serializable fields.
    • compareClassByName

      private static Comparator<Class<?>> compareClassByName
    • compareObjStrFieldsByName

      private static final Comparator<ObjectStreamField> compareObjStrFieldsByName
      Comparator for ObjectStreamFields by name
    • compareMemberByName

      private static Comparator<Member> compareMemberByName
  • Constructor Details

    • ObjectStreamClass

      private ObjectStreamClass(Class<?> cl, ObjectStreamClass superdesc, boolean serial, boolean extern)
    • ObjectStreamClass

      ObjectStreamClass(String n, long s)
  • Method Details

    • lookup

      static final ObjectStreamClass lookup(Class<?> cl)
      Find the descriptor for a class that can be serialized. Null is returned if the specified class does not implement java.io.Serializable or java.io.Externalizable.
    • lookupInternal

      static ObjectStreamClass lookupInternal(Class<?> cl)
    • getName

      public final String getName()
      The name of the class described by this descriptor.
      Returns:
      name of class
    • getSerialVersionUID

      public static final long getSerialVersionUID(Class<?> clazz)
      Return the serialVersionUID for this class. The serialVersionUID defines a set of classes all with the same name that have evolved from a common root class and agree to be serialized and deserialized using a common format.
      Parameters:
      clazz - class to get UID of
      Returns:
      UID for the class
    • getSerialVersionUID

      public final long getSerialVersionUID()
      Return the serialVersionUID for this class. The serialVersionUID defines a set of classes all with the same name that have evolved from a common root class and agree to be serialized and deserialized using a common format.
      Returns:
      SerialVersionUID for this class.
    • getSerialVersionUIDStr

      public final String getSerialVersionUIDStr()
      Return the serialVersionUID string for this class. The serialVersionUID defines a set of classes all with the same name that have evolved from a common root class and agree to be serialized and deserialized using a common format.
      Returns:
      UID for this class
    • getActualSerialVersionUID

      public static final long getActualSerialVersionUID(Class<?> clazz)
      Return the actual (computed) serialVersionUID for this class.
      Parameters:
      clazz - Class to get UID of
      Returns:
      The class UID
    • getActualSerialVersionUID

      public final long getActualSerialVersionUID()
      Return the actual (computed) serialVersionUID for this class.
      Returns:
      UID for this class
    • getActualSerialVersionUIDStr

      public final String getActualSerialVersionUIDStr()
      Return the actual (computed) serialVersionUID for this class.
      Returns:
      UID for this class
    • forClass

      public final Class<?> forClass()
      Return the class in the local VM that this version is mapped to. Null is returned if there is no corresponding local class.
      Returns:
      Class this is mapped to
    • getFields

      public ObjectStreamField[] getFields()
      Return an array of the fields of this serializable class.
      Returns:
      an array containing an element for each persistent field of this class. Returns an array of length zero if there are no fields.
      Since:
      JDK1.2
    • hasField

      public boolean hasField(ValueMember field)
    • getFieldsNoCopy

      final ObjectStreamField[] getFieldsNoCopy()
    • getField

      public final ObjectStreamField getField(String name)
      Get the field of this class by name.
      Parameters:
      name - name of the field to get
      Returns:
      The ObjectStreamField object of the named field or null if there is no such named field.
    • writeReplace

      public Serializable writeReplace(Serializable value)
    • readResolve

      public Object readResolve(Object value)
    • toString

      public final String toString()
      Return a string describing this ObjectStreamClass.
      Overrides:
      toString in class Object
    • getWriteObjectMethod

      MethodHandle getWriteObjectMethod()
    • getReadObjectMethod

      MethodHandle getReadObjectMethod()
    • init

      private void init()
    • computeRMIIIOPOptionalDataRepId

      private String computeRMIIIOPOptionalDataRepId()
      Java to IDL ptc-02-01-12 1.5.1 "The rep_id string passed to the start_value method must be 'RMI:org.omg.custom.class:hashcode:suid' where class is the fully-qualified name of the class whose writeObject method is being invoked and hashcode and suid are the class's hashcode and SUID."
    • getRMIIIOPOptionalDataRepId

      public final String getRMIIIOPOptionalDataRepId()
      This will return null if there is no writeObject method.
      Returns:
      A Serializable's optional custom data fake repository ID.
    • translateFields

      public static final ObjectStreamField[] translateFields(ObjectStreamField[] fields)
    • compareClassNames

      static boolean compareClassNames(String streamName, String localName, char pkgSeparator)
    • typeEquals

      final boolean typeEquals(ObjectStreamClass other)
    • setSuperclass

      final void setSuperclass(ObjectStreamClass s)
    • getSuperclass

      final ObjectStreamClass getSuperclass()
    • hasReadObject

      final boolean hasReadObject()
      Return whether the class has a readObject method
    • hasWriteObject

      final boolean hasWriteObject()
    • isCustomMarshaled

      final boolean isCustomMarshaled()
      Returns when or not this class should be custom marshaled (use chunking). This should happen if it is Externalizable OR if it or any of its superclasses has a writeObject method,
    • hasExternalizableBlockDataMode

      boolean hasExternalizableBlockDataMode()
    • newInstance

      Creates a new instance of the represented class. If the class is externalizable, invokes its public no-arg constructor; otherwise, if the class is serializable, invokes the no-arg constructor of the first non-serializable superclass. Throws UnsupportedOperationException if this class descriptor is not associated with a class, if the associated class is non-serializable or if the appropriate no-arg constructor is inaccessible/unavailable.
      Throws:
      InstantiationException
      InvocationTargetException
      UnsupportedOperationException
    • isSerializable

      boolean isSerializable()
    • isExternalizable

      boolean isExternalizable()
    • isNonSerializable

      boolean isNonSerializable()
    • computeFieldInfo

      private void computeFieldInfo()
    • msg

      private static void msg(String str)
    • _computeSerialVersionUID

      private static long _computeSerialVersionUID(Class<?> cl)
    • computeStructuralUID

      private static long computeStructuralUID(ObjectStreamClass osc, Class<?> cl)
    • getSignature

      static String getSignature(Class<?> clazz)
      Compute the JVM signature for the class.
    • getSignature

      static String getSignature(Method meth)
    • getSignature

      static String getSignature(Constructor<?> cons)