# Class SerialStruct

java.lang.Object
javax.sql.rowset.serial.SerialStruct

All Implemented Interfaces:
  `Serializable, Cloneable, Struct`

public class SerialStruct extends Object implements Struct, Serializable, Cloneable
A serialized mapping in the Java programming language of an SQL structured type. Each attribute that is not already serialized is mapped to a serialized form, and if an attribute is itself a structured type, each of its attributes that is not already serialized is mapped to a serialized form.

In addition, the structured type is custom mapped to a class in the Java programming language if there is such a mapping, as are its attributes, if appropriate.

The `SerialStruct` class provides a constructor for creating an instance from a `Struct` object, a method for retrieving the SQL type name of the SQL structured type in the database, and methods for retrieving its attribute values.

## Thread safety

A SerialStruct is not safe for use by multiple concurrent threads. If a SerialStruct is to be used by more than one thread then access to the SerialStruct should be controlled by appropriate synchronization.

Since:
  1.5
See Also:
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SerialStruct(SQLData in, Map<String,Class<?>> map)`
  Constructs a `SerialStruct` object from the given `SQLData` object, using the given type map to custom map it to a class in the Java programming language.
  `SerialStruct(Struct in, Map<String,Class<?>> map)`
  Constructs a `SerialStruct` object from the given `Struct` object, using the given `java.util.Map` object for custom mapping the SQL structured type or any of its attributes that are SQL structured types.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  Returns a clone of this `SerialStruct`.
  `boolean`
  `equals(Object obj)`
  Compares this SerialStruct to the specified object.
  `Object[]`
  `getAttributes()`
  Retrieves an array of `Object` values containing the attributes of the SQL structured type that this `SerialStruct` object represents.
  `Object[]`
  `getAttributes(Map<String,Class<?>> map)`
  Retrieves the attributes for the SQL structured type that this `SerialStruct` represents as an array of `Object` values, using the given type map for custom mapping if appropriate.
  `String`
  `getSQLTypeName()`
  Retrieves the SQL type name for this `SerialStruct` object.
  `int`
  `hashCode()`
  Returns a hash code for this `SerialStruct`.

  ### Methods declared in class Object

  `finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### SerialStruct

    public SerialStruct(Struct in, Map<String,Class<?>> map) throws SerialException
    Constructs a `SerialStruct` object from the given `Struct` object, using the given `java.util.Map` object for custom mapping the SQL structured type or any of its attributes that are SQL structured types.
    Parameters:
      `in` - an instance of `Struct`
      `map` - a `java.util.Map` object in which each entry consists of 1) a `String` object giving the fully qualified name of a UDT and 2) the `Class` object for the `SQLData` implementation that defines how the UDT is to be mapped
    Throws:
      `SerialException` - if an error occurs
    See Also:
      - `Struct`

  - ### SerialStruct

    public SerialStruct(SQLData in, Map<String,Class<?>> map) throws SerialException
    Constructs a `SerialStruct` object from the given `SQLData` object, using the given type map to custom map it to a class in the Java programming language. The type map gives the SQL type and the class to which it is mapped. The `SQLData` object defines the class to which the SQL type will be mapped.
    Parameters:
      `in` - an instance of the `SQLData` class that defines the mapping of the SQL structured type to one or more objects in the Java programming language
      `map` - a `java.util.Map` object in which each entry consists of 1) a `String` object giving the fully qualified name of a UDT and 2) the `Class` object for the `SQLData` implementation that defines how the UDT is to be mapped
    Throws:
      `SerialException` - if an error occurs

- ## Method Details

  - ### getSQLTypeName

    public String getSQLTypeName() throws SerialException
    Retrieves the SQL type name for this `SerialStruct` object. This is the name used in the SQL definition of the structured type
    Specified by:
      `getSQLTypeName` in interface `Struct`
    Returns:
      a `String` object representing the SQL type name for the SQL structured type that this `SerialStruct` object represents
    Throws:
      `SerialException` - if an error occurs

  - ### getAttributes

    public Object[] getAttributes() throws SerialException
    Retrieves an array of `Object` values containing the attributes of the SQL structured type that this `SerialStruct` object represents.
    Specified by:
      `getAttributes` in interface `Struct`
    Returns:
      an array of `Object` values, with each element being an attribute of the SQL structured type that this `SerialStruct` object represents
    Throws:
      `SerialException` - if an error occurs

  - ### getAttributes

    public Object[] getAttributes(Map<String,Class<?>> map) throws SerialException
    Retrieves the attributes for the SQL structured type that this `SerialStruct` represents as an array of `Object` values, using the given type map for custom mapping if appropriate.
    Specified by:
      `getAttributes` in interface `Struct`
    Parameters:
      `map` - a `java.util.Map` object in which each entry consists of 1) a `String` object giving the fully qualified name of a UDT and 2) the `Class` object for the `SQLData` implementation that defines how the UDT is to be mapped
    Returns:
      an array of `Object` values, with each element being an attribute of the SQL structured type that this `SerialStruct` object represents
    Throws:
      `SerialException` - if an error occurs

  - ### equals

    public boolean equals(Object obj)
    Compares this SerialStruct to the specified object. The result is `true` if and only if the argument is not `null` and is a `SerialStruct` object whose attributes are identical to this object's attributes
    Overrides:
      `equals` in class `Object`
    Parameters:
      `obj` - The object to compare this `SerialStruct` against
    Returns:
      `true` if the given object represents a `SerialStruct` equivalent to this SerialStruct, `false` otherwise
    See Also:
      - `Object.hashCode()`
      - `HashMap`

  - ### hashCode

    public int hashCode()
    Returns a hash code for this `SerialStruct`. The hash code for a `SerialStruct` object is computed using the hash codes of the attributes of the `SerialStruct` object and its `SQLTypeName`
    Overrides:
      `hashCode` in class `Object`
    Returns:
      a hash code value for this object.
    See Also:
      - `Object.equals(java.lang.Object)`
      - `System.identityHashCode(Object)`

  - ### clone

    public Object clone()
    Returns a clone of this `SerialStruct`. The copy will contain a reference to a clone of the underlying attribs array, not a reference to the original underlying attribs array of this `SerialStruct` object.
    Overrides:
      `clone` in class `Object`
    Returns:
      a clone of this SerialStruct
    See Also:
      - `Cloneable`