< prev index next >

src/java.base/share/classes/java/io/ObjectStreamField.java

Print this page
rev 17455 : 8184603: Create ObjectStreamField signature lazily when possible
Reviewed-by: rriggs

*** 44,54 **** { /** field name */ private final String name; /** canonical JVM signature of field type */ ! private final String signature; /** field type (Object.class if unknown non-primitive type) */ private final Class<?> type; /** whether or not to (de)serialize field values as unshared */ private final boolean unshared; /** corresponding reflective field object, if any */ --- 44,54 ---- { /** field name */ private final String name; /** canonical JVM signature of field type */ ! private volatile String signature; /** field type (Object.class if unknown non-primitive type) */ private final Class<?> type; /** whether or not to (de)serialize field values as unshared */ private final boolean unshared; /** corresponding reflective field object, if any */
*** 89,99 **** throw new NullPointerException(); } this.name = name; this.type = type; this.unshared = unshared; ! signature = getClassSignature(type).intern(); field = null; } /** * Creates an ObjectStreamField representing a field with the given name, --- 89,99 ---- throw new NullPointerException(); } this.name = name; this.type = type; this.unshared = unshared; ! signature = null; field = null; } /** * Creates an ObjectStreamField representing a field with the given name,
*** 240,260 **** * * @return the typecode of the serializable field */ // REMIND: deprecate? public char getTypeCode() { ! return signature.charAt(0); } /** * Return the JVM type signature. * * @return null if this field has a primitive type. */ // REMIND: deprecate? public String getTypeString() { ! return isPrimitive() ? null : signature; } /** * Offset of field within instance data. * --- 240,260 ---- * * @return the typecode of the serializable field */ // REMIND: deprecate? public char getTypeCode() { ! return getSignature().charAt(0); } /** * Return the JVM type signature. * * @return null if this field has a primitive type. */ // REMIND: deprecate? public String getTypeString() { ! return isPrimitive() ? null : getSignature(); } /** * Offset of field within instance data. *
*** 282,292 **** * * @return true if and only if this field corresponds to a primitive type */ // REMIND: deprecate? public boolean isPrimitive() { ! char tcode = signature.charAt(0); return ((tcode != 'L') && (tcode != '[')); } /** * Returns boolean value indicating whether or not the serializable field --- 282,292 ---- * * @return true if and only if this field corresponds to a primitive type */ // REMIND: deprecate? public boolean isPrimitive() { ! char tcode = getTypeCode(); return ((tcode != 'L') && (tcode != '[')); } /** * Returns boolean value indicating whether or not the serializable field
*** 334,341 **** /** * Returns JVM type signature of field (similar to getTypeString, except * that signature strings are returned for primitive fields as well). */ String getSignature() { ! return signature; } } --- 334,349 ---- /** * Returns JVM type signature of field (similar to getTypeString, except * that signature strings are returned for primitive fields as well). */ String getSignature() { ! String sig = signature; ! ! // This lazy calculation is safe since sig can be null iff one of the ! // public constructors are used, in which case type is always ! // initialized to the exact type we want the signature to represent. ! if (sig == null) { ! sig = signature = getClassSignature(type).intern(); ! } ! return sig; } }
< prev index next >