ObjectStreamFieldpublic class ObjectStreamField extends Object implements ComparableA description of a Serializable field from a Serializable class. An array
of ObjectStreamFields is used to declare the Serializable fields of a class. |
Fields Summary |
---|
private final String | namefield name | private final String | signaturecanonical JVM signature of field type | private final Class | typefield type (Object.class if unknown non-primitive type) | private final boolean | unsharedwhether or not to (de)serialize field values as unshared | private final Field | fieldcorresponding reflective field object, if any | private int | offsetoffset of field value in enclosing field group |
Constructors Summary |
---|
public ObjectStreamField(String name, Class type)Create a Serializable field with the specified type. This field should
be documented with a serialField tag.
this(name, type, false);
| 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.
if (name == null) {
throw new NullPointerException();
}
this.name = name;
this.type = type;
this.unshared = unshared;
signature = ObjectStreamClass.getClassSignature(type).intern();
field = null;
| ObjectStreamField(String name, String signature, boolean unshared)Creates an ObjectStreamField representing a field with the given name,
signature and unshared setting.
if (name == null) {
throw new NullPointerException();
}
this.name = name;
this.signature = signature.intern();
this.unshared = unshared;
field = null;
switch (signature.charAt(0)) {
case 'Z": type = Boolean.TYPE; break;
case 'B": type = Byte.TYPE; break;
case 'C": type = Character.TYPE; break;
case 'S": type = Short.TYPE; break;
case 'I": type = Integer.TYPE; break;
case 'J": type = Long.TYPE; break;
case 'F": type = Float.TYPE; break;
case 'D": type = Double.TYPE; break;
case 'L":
case '[": type = Object.class; break;
default: throw new IllegalArgumentException("illegal signature");
}
| 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).
this.field = field;
this.unshared = unshared;
name = field.getName();
Class ftype = field.getType();
type = (showType || ftype.isPrimitive()) ? ftype : Object.class;
signature = ObjectStreamClass.getClassSignature(ftype).intern();
|
Methods Summary |
---|
public int | compareTo(java.lang.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.
ObjectStreamField other = (ObjectStreamField) obj;
boolean isPrim = isPrimitive();
if (isPrim != other.isPrimitive()) {
return isPrim ? -1 : 1;
}
return name.compareTo(other.name);
| java.lang.reflect.Field | getField()Returns field represented by this ObjectStreamField, or null if
ObjectStreamField is not associated with an actual field.
return field;
| public java.lang.String | getName()Get the name of this field.
return name;
| public int | getOffset()Offset of field within instance data.
return offset;
| java.lang.String | getSignature()Returns JVM type signature of field (similar to getTypeString, except
that signature strings are returned for primitive fields as well).
return signature;
| public java.lang.Class | getType()Get the type of the field. If the type is non-primitive and this
ObjectStreamField was obtained from a deserialized {@link
ObjectStreamClass} instance, then Object.class is returned.
Otherwise, the Class object for the type of the field is
returned.
return type;
| 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
return signature.charAt(0);
| public java.lang.String | getTypeString()Return the JVM type signature.
return isPrimitive() ? null : signature;
| public boolean | isPrimitive()Return true if this field has a primitive type.
char tcode = signature.charAt(0);
return ((tcode != 'L") && (tcode != '["));
| public boolean | isUnshared()Returns boolean value indicating whether or not the serializable field
represented by this ObjectStreamField instance is unshared.
return unshared;
| protected void | setOffset(int offset)Offset within instance data.
this.offset = offset;
| public java.lang.String | toString()Return a string that describes this field.
return signature + ' " + name;
|
|