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 Boot2 系列教程(十三)Spring Boot 中的全局异常处理

Spring源码分析(二十三)BeanFactory的后处理

Spring学习十三----------Spring AOP的基本概念

spring更好的处理泛型

spring学习十三

头秃系列,二十三张图带你从源码分析Spring Boot 启动流程~