org.springframework.core.convert
Class TypeDescriptor

java.lang.Object
  extended by 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) 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