# 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`