Class ObjectStreamClass

  • All Implemented Interfaces:
    java.io.Serializable

    public class ObjectStreamClass
    extends java.lang.Object
    implements java.io.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:
    Serialized Form
    • Field Detail

      • isEnum

        private boolean isEnum
      • bridge

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

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

        private java.lang.String name
      • serializable

        private boolean serializable
      • externalizable

        private boolean externalizable
      • ofClass

        private java.lang.Class<?> ofClass
      • forProxyClass

        boolean forProxyClass
      • suid

        private long suid
      • suidStr

        private java.lang.String suidStr
      • actualSuid

        private long actualSuid
      • actualSuidStr

        private java.lang.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 java.lang.Object lock
      • hasExternalizableBlockData

        private boolean hasExternalizableBlockData
      • writeObjectMethod

        private java.lang.invoke.MethodHandle writeObjectMethod
      • readObjectMethod

        private java.lang.invoke.MethodHandle readObjectMethod
      • writeReplaceObjectMethod

        private transient java.lang.invoke.MethodHandle writeReplaceObjectMethod
      • readResolveObjectMethod

        private transient java.lang.invoke.MethodHandle readResolveObjectMethod
      • cons

        private java.lang.reflect.Constructor<?> cons
      • rmiiiopOptionalDataRepId

        private java.lang.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:
        Constant Field Values
      • 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 java.util.Comparator<java.lang.Class<?>> compareClassByName
      • compareObjStrFieldsByName

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

        private static java.util.Comparator<java.lang.reflect.Member> compareMemberByName
    • Constructor Detail

      • ObjectStreamClass

        private ObjectStreamClass​(java.lang.Class<?> cl,
                                  ObjectStreamClass superdesc,
                                  boolean serial,
                                  boolean extern)
      • ObjectStreamClass

        ObjectStreamClass​(java.lang.String n,
                          long s)
    • Method Detail

      • lookup

        static final ObjectStreamClass lookup​(java.lang.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​(java.lang.Class<?> cl)
      • getName

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

        public static final long getSerialVersionUID​(java.lang.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 java.lang.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​(java.lang.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 java.lang.String getActualSerialVersionUIDStr()
        Return the actual (computed) serialVersionUID for this class.
        Returns:
        UID for this class
      • forClass

        public final java.lang.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)
      • getField

        public final ObjectStreamField getField​(java.lang.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 java.io.Serializable writeReplace​(java.io.Serializable value)
      • readResolve

        public java.lang.Object readResolve​(java.lang.Object value)
      • toString

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

        java.lang.invoke.MethodHandle getWriteObjectMethod()
      • getReadObjectMethod

        java.lang.invoke.MethodHandle getReadObjectMethod()
      • init

        private void init()
      • computeRMIIIOPOptionalDataRepId

        private java.lang.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 java.lang.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​(java.io.ObjectStreamField[] fields)
      • compareClassNames

        static boolean compareClassNames​(java.lang.String streamName,
                                         java.lang.String localName,
                                         char pkgSeparator)
      • 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

        java.lang.Object newInstance()
                              throws java.lang.InstantiationException,
                                     java.lang.reflect.InvocationTargetException,
                                     java.lang.UnsupportedOperationException
        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:
        java.lang.InstantiationException
        java.lang.reflect.InvocationTargetException
        java.lang.UnsupportedOperationException
      • isSerializable

        boolean isSerializable()
      • isExternalizable

        boolean isExternalizable()
      • isNonSerializable

        boolean isNonSerializable()
      • computeFieldInfo

        private void computeFieldInfo()
      • msg

        private static void msg​(java.lang.String str)
      • _computeSerialVersionUID

        private static long _computeSerialVersionUID​(java.lang.Class<?> cl)
      • computeStructuralUID

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

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

        static java.lang.String getSignature​(java.lang.reflect.Method meth)
      • getSignature

        static java.lang.String getSignature​(java.lang.reflect.Constructor<?> cons)