org.springframework.core
Class GenericTypeResolver

java.lang.Object
  extended by org.springframework.core.GenericTypeResolver

public abstract class GenericTypeResolver
extends Object

Helper class for resolving generic types against type variables.

Mainly intended for usage within the framework, resolving method parameter types even when they are declared generically.

Since:
2.5.2
Author:
Juergen Hoeller, Rob Harrop
See Also:
GenericCollectionTypeResolver

Constructor Summary
GenericTypeResolver()
           
 
Method Summary
static Type getTargetType(MethodParameter methodParam)
          Determine the target type for the given parameter specification.
static Map<TypeVariable,Type> getTypeVariableMap(Class clazz)
          Build a mapping of TypeVariable names to concrete Class for the specified Class.
static Class<?> resolveParameterType(MethodParameter methodParam, Class clazz)
          Determine the target type for the given generic parameter type.
static Class<?> resolveReturnType(Method method, Class clazz)
          Determine the target type for the generic return type of the given method.
static Class<?> resolveReturnTypeArgument(Method method, Class<?> genericIfc)
          Resolve the single type argument of the given generic interface against the given target method which is assumed to return the given interface or an implementation of it.
static Class<?> resolveType(Type genericType, Map<TypeVariable,Type> typeVariableMap)
          Resolve the specified generic type against the given TypeVariable map.
static Class<?> resolveTypeArgument(Class clazz, Class genericIfc)
          Resolve the single type argument of the given generic interface against the given target class which is assumed to implement the generic interface and possibly declare a concrete type for its type variable.
static Class[] resolveTypeArguments(Class clazz, Class genericIfc)
          Resolve the type arguments of the given generic interface against the given target class which is assumed to implement the generic interface and possibly declare concrete types for its type variables.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GenericTypeResolver

public GenericTypeResolver()
Method Detail

getTargetType

public static Type getTargetType(MethodParameter methodParam)
Determine the target type for the given parameter specification.

Parameters:
methodParam - the method parameter specification
Returns:
the corresponding generic parameter type

resolveParameterType

public static Class<?> resolveParameterType(MethodParameter methodParam,
                                            Class clazz)
Determine the target type for the given generic parameter type.

Parameters:
methodParam - the method parameter specification
clazz - the class to resolve type variables against
Returns:
the corresponding generic parameter or return type

resolveReturnType

public static Class<?> resolveReturnType(Method method,
                                         Class clazz)
Determine the target type for the generic return type of the given method.

Parameters:
method - the method to introspect
clazz - the class to resolve type variables against
Returns:
the corresponding generic parameter or return type

resolveReturnTypeArgument

public static Class<?> resolveReturnTypeArgument(Method method,
                                                 Class<?> genericIfc)
Resolve the single type argument of the given generic interface against the given target method which is assumed to return the given interface or an implementation of it.

Parameters:
method - the target method to check the return type of
genericIfc - the generic interface or superclass to resolve the type argument from
Returns:
the resolved parameter type of the method return type, or null if not resolvable or if the single argument is of type WildcardType.

resolveTypeArgument

public static Class<?> resolveTypeArgument(Class clazz,
                                           Class genericIfc)
Resolve the single type argument of the given generic interface against the given target class which is assumed to implement the generic interface and possibly declare a concrete type for its type variable.

Parameters:
clazz - the target class to check against
genericIfc - the generic interface or superclass to resolve the type argument from
Returns:
the resolved type of the argument, or null if not resolvable

resolveTypeArguments

public static Class[] resolveTypeArguments(Class clazz,
                                           Class genericIfc)
Resolve the type arguments of the given generic interface against the given target class which is assumed to implement the generic interface and possibly declare concrete types for its type variables.

Parameters:
clazz - the target class to check against
genericIfc - the generic interface or superclass to resolve the type argument from
Returns:
the resolved type of each argument, with the array size matching the number of actual type arguments, or null if not resolvable

resolveType

public static Class<?> resolveType(Type genericType,
                                   Map<TypeVariable,Type> typeVariableMap)
Resolve the specified generic type against the given TypeVariable map.

Parameters:
genericType - the generic type to resolve
typeVariableMap - the TypeVariable Map to resolved against
Returns:
the type if it resolves to a Class, or Object.class otherwise

getTypeVariableMap

public static Map<TypeVariable,Type> getTypeVariableMap(Class clazz)
Build a mapping of TypeVariable names to concrete Class for the specified Class. Searches all super types, enclosing types and interfaces.