java.io
Class ObjectStreamField

java.lang.Object
  extended byjava.io.ObjectStreamField
All Implemented Interfaces:
Comparable

public class ObjectStreamField
extends Object
implements Comparable

A description of a Serializable field from a Serializable class. An array of ObjectStreamFields is used to declare the Serializable fields of a class.

Since:
1.2
Author:
Mike Warres, Roger Riggs
See Also:
ObjectStreamClass

Field Summary
private  Field field
          corresponding reflective field object, if any
private  String name
          field name
private  int offset
          offset of field value in enclosing field group
private  String signature
          canonical JVM signature of field type
private  Class type
          field type (Object.class if unknown non-primitive type)
private  boolean unshared
          whether or not to (de)serialize field values as unshared
 
Constructor Summary
(package private) ObjectStreamField(Field field, boolean unshared, boolean showType)
          Creates an ObjectStreamField representing the given field with the specified unshared setting.
  ObjectStreamField(String name, Class type)
          Create a Serializable field with the specified type.
  ObjectStreamField(String name, Class type, boolean unshared)
          Creates an ObjectStreamField representing a serializable field with the given name and type.
(package private) ObjectStreamField(String name, String signature, boolean unshared)
          Creates an ObjectStreamField representing a field with the given name, signature and unshared setting.
 
Method Summary
 int compareTo(Object obj)
          Compare this field with another ObjectStreamField.
(package private)  Field getField()
          Returns field represented by this ObjectStreamField, or null if ObjectStreamField is not associated with an actual field.
 String getName()
          Get the name of this field.
 int getOffset()
          Offset of field within instance data.
(package private)  String getSignature()
          Returns JVM type signature of field (similar to getTypeString, except that signature strings are returned for primitive fields as well).
 Class getType()
          Get the type of the field.
 char getTypeCode()
          Returns character encoding of field type.
 String getTypeString()
          Return the JVM type signature.
 boolean isPrimitive()
          Return true if this field has a primitive type.
 boolean isUnshared()
          Returns boolean value indicating whether or not the serializable field represented by this ObjectStreamField instance is unshared.
protected  void setOffset(int offset)
          Offset within instance data.
 String toString()
          Return a string that describes this field.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

name

private final String name
field name


signature

private final String signature
canonical JVM signature of field type


type

private final Class type
field type (Object.class if unknown non-primitive type)


unshared

private final boolean unshared
whether or not to (de)serialize field values as unshared


field

private final Field field
corresponding reflective field object, if any


offset

private int offset
offset of field value in enclosing field group

Constructor Detail

ObjectStreamField

public ObjectStreamField(String name,
                         Class type)
Create a Serializable field with the specified type. This field should be documented with a serialField tag.

Parameters:
name - the name of the serializable field
type - the Class object of the serializable field

ObjectStreamField

public ObjectStreamField(String name,
                         Class type,
                         boolean unshared)
Creates an ObjectStreamField representing a serializable field with the given name and type. If unshared is false, values of the represented field are serialized and deserialized in the default manner--if the field is non-primitive, object values are serialized and deserialized as if they had been written and read by calls to writeObject and readObject. If unshared is true, values of the represented field are serialized and deserialized as if they had been written and read by calls to writeUnshared and readUnshared.

Parameters:
name - field name
type - field type
unshared - if false, write/read field values in the same manner as writeObject/readObject; if true, write/read in the same manner as writeUnshared/readUnshared

ObjectStreamField

ObjectStreamField(String name,
                  String signature,
                  boolean unshared)
Creates an ObjectStreamField representing a field with the given name, signature and unshared setting.


ObjectStreamField

ObjectStreamField(Field field,
                  boolean unshared,
                  boolean showType)
Creates an ObjectStreamField representing the given field with the specified unshared setting. For compatibility with the behavior of earlier serialization implementations, a "showType" parameter is necessary to govern whether or not a getType() call on this ObjectStreamField (if non-primitive) will return Object.class (as opposed to a more specific reference type).

Method Detail

getName

public String getName()
Get the name of this field.

Returns:
a String representing the name of the serializable field

getType

public Class getType()
Get the type of the field.

Returns:
the Class object of the serializable field

getTypeCode

public char getTypeCode()
Returns character encoding of field type. The encoding is as follows:
 B            byte
 C            char
 D            double
 F            float
 I            int
 J            long
 L            class or interface
 S            short
 Z            boolean
 [            array
 

Returns:
the typecode of the serializable field

getTypeString

public String getTypeString()
Return the JVM type signature.

Returns:
null if this field has a primitive type.

getOffset

public int getOffset()
Offset of field within instance data.

Returns:
the offset of this field
See Also:
setOffset(int)

setOffset

protected void setOffset(int offset)
Offset within instance data.

Parameters:
offset - the offset of the field
See Also:
getOffset()

isPrimitive

public boolean isPrimitive()
Return true if this field has a primitive type.

Returns:
true if and only if this field corresponds to a primitive type

isUnshared

public boolean isUnshared()
Returns boolean value indicating whether or not the serializable field represented by this ObjectStreamField instance is unshared.


compareTo

public int compareTo(Object obj)
Compare this field with another ObjectStreamField. Return -1 if this is smaller, 0 if equal, 1 if greater. Types that are primitives are "smaller" than object types. If equal, the field names are compared.

Specified by:
compareTo in interface Comparable
Parameters:
obj - the Object to be compared.
Returns:
a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.

toString

public String toString()
Return a string that describes this field.

Overrides:
toString in class Object
Returns:
a string representation of the object.

getField

Field getField()
Returns field represented by this ObjectStreamField, or null if ObjectStreamField is not associated with an actual field.


getSignature

String getSignature()
Returns JVM type signature of field (similar to getTypeString, except that signature strings are returned for primitive fields as well).