public abstract class GenericTypeResolver
extends java.lang.Object
Mainly intended for usage within the framework, resolving method parameter types even when they are declared generically.
GenericCollectionTypeResolver
Constructor and Description |
---|
GenericTypeResolver() |
Modifier and Type | Method and Description |
---|---|
static java.lang.reflect.Type |
getTargetType(MethodParameter methodParam)
Deprecated.
as of Spring 4.0, use
MethodParameter.getGenericParameterType() |
static java.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> |
getTypeVariableMap(java.lang.Class<?> clazz)
Deprecated.
as of Spring 4.0 in favor of
ResolvableType |
static java.lang.Class<?> |
resolveParameterType(MethodParameter methodParam,
java.lang.Class<?> clazz)
Determine the target type for the given generic parameter type.
|
static java.lang.Class<?> |
resolveReturnType(java.lang.reflect.Method method,
java.lang.Class<?> clazz)
Determine the target type for the generic return type of the given method,
where formal type variables are declared on the given class.
|
static java.lang.Class<?> |
resolveReturnTypeArgument(java.lang.reflect.Method method,
java.lang.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 java.lang.Class<?> |
resolveReturnTypeForGenericMethod(java.lang.reflect.Method method,
java.lang.Object[] args,
java.lang.ClassLoader classLoader)
Determine the target type for the generic return type of the given
generic method, where formal type variables are declared on
the given method itself.
|
static java.lang.Class<?> |
resolveType(java.lang.reflect.Type genericType,
java.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> map)
Deprecated.
as of Spring 4.0 in favor of
ResolvableType |
static java.lang.Class<?> |
resolveTypeArgument(java.lang.Class<?> clazz,
java.lang.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 java.lang.Class<?>[] |
resolveTypeArguments(java.lang.Class<?> clazz,
java.lang.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.
|
@Deprecated public static java.lang.reflect.Type getTargetType(MethodParameter methodParam)
MethodParameter.getGenericParameterType()
methodParam
- the method parameter specificationpublic static java.lang.Class<?> resolveParameterType(MethodParameter methodParam, java.lang.Class<?> clazz)
methodParam
- the method parameter specificationclazz
- the class to resolve type variables againstpublic static java.lang.Class<?> resolveReturnType(java.lang.reflect.Method method, java.lang.Class<?> clazz)
method
- the method to introspectclazz
- the class to resolve type variables againstresolveReturnTypeForGenericMethod(java.lang.reflect.Method, java.lang.Object[], java.lang.ClassLoader)
public static java.lang.Class<?> resolveReturnTypeForGenericMethod(java.lang.reflect.Method method, java.lang.Object[] args, java.lang.ClassLoader classLoader)
For example, given a factory method with the following signature,
if resolveReturnTypeForGenericMethod()
is invoked with the reflected
method for creatProxy()
and an Object[]
array containing
MyService.class
, resolveReturnTypeForGenericMethod()
will
infer that the target return type is MyService
.
public static <T> T createProxy(Class<T> clazz)
method
does not declare any formal type variablesnull
, if the length of the given arguments array is shorter
than the length of the formal argument list for the given
methodmethod
- the method to introspect, never null
args
- the arguments that will be supplied to the method when it is
invoked (never null
)classLoader
- the ClassLoader to resolve class names against, if necessary
(may be null
)null
resolveReturnType(java.lang.reflect.Method, java.lang.Class<?>)
public static java.lang.Class<?> resolveReturnTypeArgument(java.lang.reflect.Method method, java.lang.Class<?> genericIfc)
method
- the target method to check the return type ofgenericIfc
- the generic interface or superclass to resolve the type argument fromnull
if not resolvable or if the single argument is of type WildcardType
.public static java.lang.Class<?> resolveTypeArgument(java.lang.Class<?> clazz, java.lang.Class<?> genericIfc)
clazz
- the target class to check againstgenericIfc
- the generic interface or superclass to resolve the type argument fromnull
if not resolvablepublic static java.lang.Class<?>[] resolveTypeArguments(java.lang.Class<?> clazz, java.lang.Class<?> genericIfc)
clazz
- the target class to check againstgenericIfc
- the generic interface or superclass to resolve the type argument fromnull
if not resolvable@Deprecated public static java.lang.Class<?> resolveType(java.lang.reflect.Type genericType, java.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> map)
ResolvableType
genericType
- the generic type to resolvemap
- the TypeVariable Map to resolved againstObject.class
otherwise@Deprecated public static java.util.Map<java.lang.reflect.TypeVariable,java.lang.reflect.Type> getTypeVariableMap(java.lang.Class<?> clazz)
ResolvableType
TypeVariable names
to
concrete classes
for the specified Class
. Searches
all super types, enclosing types and interfaces.