## org.springframework.core.convert
Class TypeDescriptor

    java.lang.Object
      org.springframework.core.convert.TypeDescriptor

Direct Known Subclasses:
  PropertyTypeDescriptor

    public class TypeDescriptor

extends Object

Context about a type to convert to.

Since:
  3.0
Author:
  Keith Donald, Andy Clement, Juergen Hoeller

Field Summary
`static TypeDescriptor` `NULL` Constant defining a TypeDescriptor for a `null` value

Constructor Summary
`TypeDescriptor(Field field)` Create a new type descriptor for a field.
`TypeDescriptor(Field field, Class<?> type)` Create a new type descriptor for a field.
`TypeDescriptor(MethodParameter methodParameter)` Create a new type descriptor from a method or constructor parameter.
`TypeDescriptor(MethodParameter methodParameter, Class<?> type)` Create a new type descriptor from a method or constructor parameter.

Method Summary
`String` `asString()` A textual representation of the type descriptor (eg.
`boolean` `equals(Object obj)`
`TypeDescriptor` `forElementType(Class<?> elementType)` Create a copy of this type descriptor, preserving the context information but exposing the specified element type (e.g.
`static TypeDescriptor` `forObject(Object object)` Create a new type descriptor for the class of the given object.
`Annotation` `getAnnotation(Class<? extends Annotation> annotationType)` Obtain the annotation associated with the wrapped parameter/field, if any.
`Annotation[]` `getAnnotations()` Obtain the annotations associated with the wrapped parameter/field, if any.
`Class<?>` `getElementType()` If this type is an array type or `Collection` type, returns the underlying element type.
`TypeDescriptor` `getElementTypeDescriptor()` Return the element type as a type descriptor.
`TypeDescriptor` `getElementTypeDescriptor(Object element)` Return the element type as a type descriptor.
`Field` `getField()` Return the wrapped Field, if any.
`Class<?>` `getMapKeyType()` Determine the generic key type of the wrapped Map parameter/field, if any.
`TypeDescriptor` `getMapKeyTypeDescriptor()` Returns map key type as a type descriptor.
`TypeDescriptor` `getMapKeyTypeDescriptor(Object key)` Return the map key type as a type descriptor.
`Class<?>` `getMapValueType()` Determine the generic value type of the wrapped Map parameter/field, if any.
`TypeDescriptor` `getMapValueTypeDescriptor()` Returns map value type as a type descriptor.
`TypeDescriptor` `getMapValueTypeDescriptor(Object value)` Return the map value type as a type descriptor.
`MethodParameter` `getMethodParameter()` Return the wrapped MethodParameter, if any.
`String` `getName()` Returns the name of this type: the fully qualified class name.
`Class<?>` `getObjectType()` Determine the declared type of the wrapped parameter/field.
`Class<?>` `getType()` Determine the declared (non-generic) type of the wrapped parameter/field.
`int` `hashCode()`
`boolean` `isArray()` Is this type an array type?
`boolean` `isAssignableTo(TypeDescriptor targetType)` Returns true if an object of this type can be assigned to a reference of given targetType.
`boolean` `isCollection()` Is this type a `Collection` type?
`boolean` `isMap()` Is this type a `Map` type?
`boolean` `isMapEntryTypeKnown()` Is this descriptor for a map where the key type and value type are known?
`boolean` `isPrimitive()` Is this type a primitive type?
`String` `toString()`
`static TypeDescriptor` `valueOf(Class<?> type)` Create a new type descriptor for the given class.

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### NULL

    public static final TypeDescriptor NULL

  Constant defining a TypeDescriptor for a `null` value

Constructor Detail

### TypeDescriptor

    public TypeDescriptor(MethodParameter methodParameter)

  Create a new type descriptor from a method or constructor parameter.

  Use this constructor when a target conversion point originates from a method parameter, such as a setter method argument.

  Parameters:
    `methodParameter` - the MethodParameter to wrap

### TypeDescriptor

    public TypeDescriptor(Field field)

  Create a new type descriptor for a field. Use this constructor when a target conversion point originates from a field.

  Parameters:
    `field` - the field to wrap

### TypeDescriptor

    public TypeDescriptor(MethodParameter methodParameter,
                          Class<?> type)

  Create a new type descriptor from a method or constructor parameter.

  Use this constructor when a target conversion point originates from a method parameter, such as a setter method argument.

  Parameters:
    `methodParameter` - the MethodParameter to wrap
    `type` - the specific type to expose (may be an array/collection element)

### TypeDescriptor

    public TypeDescriptor(Field field,
                          Class<?> type)

  Create a new type descriptor for a field. Use this constructor when a target conversion point originates from a field.

  Parameters:
    `field` - the field to wrap
    `type` - the specific type to expose (may be an array/collection element)

Method Detail

### getMethodParameter

    public MethodParameter getMethodParameter()

  Return the wrapped MethodParameter, if any.

  Note: Either MethodParameter or Field is available.

  Returns:
    the MethodParameter, or `null` if none

### getField

    public Field getField()

  Return the wrapped Field, if any.

  Note: Either MethodParameter or Field is available.

  Returns:
    the Field, or `null` if none

### getType

    public Class<?> getType()

  Determine the declared (non-generic) type of the wrapped parameter/field.

  Returns:
    the declared type, or `null` if this is `NULL`

### getObjectType

    public Class<?> getObjectType()

  Determine the declared type of the wrapped parameter/field. Returns the Object wrapper type if the underlying type is a primitive.

### getName

    public String getName()

  Returns the name of this type: the fully qualified class name.

### isPrimitive

    public boolean isPrimitive()

  Is this type a primitive type?

### isArray

    public boolean isArray()

  Is this type an array type?

### isCollection

    public boolean isCollection()

  Is this type a `Collection` type?

### getElementType

    public Class<?> getElementType()

  If this type is an array type or `Collection` type, returns the underlying element type. Returns `null` if the type is neither an array or collection.

### getElementTypeDescriptor

    public TypeDescriptor getElementTypeDescriptor()

  Return the element type as a type descriptor.

### getElementTypeDescriptor

    public TypeDescriptor getElementTypeDescriptor(Object element)

  Return the element type as a type descriptor. If the element type is null (cannot be determined), the type descriptor is derived from the element argument.

  Parameters:
    `element` - the element
  Returns:
    the element type descriptor

### isMap

    public boolean isMap()

  Is this type a `Map` type?

### isMapEntryTypeKnown

    public boolean isMapEntryTypeKnown()

  Is this descriptor for a map where the key type and value type are known?

### getMapKeyType

    public Class<?> getMapKeyType()

  Determine the generic key type of the wrapped Map parameter/field, if any.

  Returns:
    the generic type, or `null` if none

### getMapKeyTypeDescriptor

    public TypeDescriptor getMapKeyTypeDescriptor()

  Returns map key type as a type descriptor.

### getMapKeyTypeDescriptor

    public TypeDescriptor getMapKeyTypeDescriptor(Object key)

  Return the map key type as a type descriptor. If the key type is `null` (cannot be determined), the type descriptor is derived from the key argument.

  Parameters:
    `key` - the key
  Returns:
    the map key type descriptor

### getMapValueType

    public Class<?> getMapValueType()

  Determine the generic value type of the wrapped Map parameter/field, if any.

  Returns:
    the generic type, or `null` if none

### getMapValueTypeDescriptor

    public TypeDescriptor getMapValueTypeDescriptor()

  Returns map value type as a type descriptor.

### getMapValueTypeDescriptor

    public TypeDescriptor getMapValueTypeDescriptor(Object value)

  Return the map value type as a type descriptor. If the value type is null (cannot be determined), the type descriptor is derived from the value argument.

  Parameters:
    `value` - the value
  Returns:
    the map value type descriptor

### getAnnotations

    public Annotation[] getAnnotations()

  Obtain the annotations associated with the wrapped parameter/field, if any.

### getAnnotation

    public Annotation getAnnotation(Class<? extends Annotation> annotationType)

  Obtain the annotation associated with the wrapped parameter/field, if any.

### isAssignableTo

    public boolean isAssignableTo(TypeDescriptor targetType)

  Returns true if an object of this type can be assigned to a reference of given targetType.

  Parameters:
    `targetType` - the target type
  Returns:
    true if this type is assignable to the target

### forElementType

    public TypeDescriptor forElementType(Class<?> elementType)

  Create a copy of this type descriptor, preserving the context information but exposing the specified element type (e.g. an array/collection/map element).

  Parameters:
    `elementType` - the desired type to expose
  Returns:
    the type descriptor

### equals

    public boolean equals(Object obj)

  Overrides:
    `equals` in class `Object`

### hashCode

    public int hashCode()

  Overrides:
    `hashCode` in class `Object`

### asString

    public String asString()

  A textual representation of the type descriptor (eg. Map<String,Foo>) for use in messages.

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`

### forObject

    public static TypeDescriptor forObject(Object object)

  Create a new type descriptor for the class of the given object.

  Parameters:
    `object` - the object
  Returns:
    the type descriptor

### valueOf

    public static TypeDescriptor valueOf(Class<?> type)

  Create a new type descriptor for the given class.

  Parameters:
    `type` - the class
  Returns:
    the type descriptor