Spring(十三)--Spring泛型处理
Posted jazon@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring(十三)--Spring泛型处理相关的知识,希望对你有一定的参考价值。
- Java5类型接口-java.lang.reflect.Type
- Java泛型反射API
Spring泛型类型辅助类
核心API-org.springframework.core.GenericTypeResolver
1.处理类型相关(Type)相关方法
- resolveReturnType: 获取方法返回值的Type
- resolveType:
2.处理泛型参数类型(ParameterizedType)相关方法
- resolveReturnTypeArgument: 获取方法返回值的泛型参数
- resolveTypeArgument
/**
* 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.
* @param clazz the target class to check against
* @param genericIfc the generic interface or superclass to resolve the type argument from
* @return the resolved type of the argument, or {@code null} if not resolvable
*/
/**
获取clazz在genericIfc的泛型参数
*/
@Nullable
public static Class<?> resolveTypeArgument(Class<?> clazz, Class<?> genericIfc)
- resolveTypeArguments
/**
获取clazz在genericIfc的多个泛型参数
*/
public static Class<?>[] resolveTypeArguments(Class<?> clazz, Class<?> genericIfc)
- 处理泛型类型变量(TypeVariable)相关方法
/**
获取clazz的类定义的所有泛型Map,T -> 实际的T类型
*/
public static Map<TypeVariable, Type> getTypeVariableMap(Class<?> clazz);
Spring泛型优化实现-ResolvableType
org.springframework.core.ResolvableType
- 获取ResolvableType,工厂方法
ResolvableType resolvableType = ResolvableType.forClass(StuDao.class);
- 转换方法: as* 方法
// 获取
as(Class<?> type)
// 获取Collection的ResolvableType
asCollection()
// 获取Map的ResolvableType
asMap()
- 处理方法: resolve*方法
// 获取第一个泛型参数
resolveGeneric(int index)
以上是关于Spring(十三)--Spring泛型处理的主要内容,如果未能解决你的问题,请参考以下文章
Spring源码分析(二十三)BeanFactory的后处理
Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理