`

实用的反射类工具源码分析---SpringSide的工具类

 
阅读更多
SpringSide的工具类。
pk: org.springside.core.utils
public class GenericsUtils


/**
	 * 通过反射,获得定义Class时声明的父类的范型参数的类型. 如public BookManager extends GenricManager<Book>
	 *
	 * @param clazz clazz The class to introspect
	 * @param index the Index of the generic ddeclaration,start from 0.
	 * @return the index generic declaration, or <code>Object.class</code> if cannot be determined
	 */
	public static Class getSuperClassGenricType(Class clazz, int index) {
		//得到clazz的父类
		Type genType = clazz.getGenericSuperclass();

		//如果没有实现ParameterizedType 接口,即不支持泛型,所以直接返回Object.class 
//**这个接口是jdk1.5以后才出来的。
		if (!(genType instanceof ParameterizedType)) {
			log.warn(clazz.getSimpleName() + "'s superclass not ParameterizedType");
			return Object.class;
		}
		//	返回表示此类型实际类型参数的 Type 对象的数组,数组里放的都是对应类型的Class
		//如UserAction extends StrutsSecurityAction<User, UserManager> 就返回User和UserManager类型
		Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
		
				
		if (index >= params.length || index < 0) {
			log.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "+ params.length);
			return Object.class;
		}
		
		if (!(params[index] instanceof Class)) {
			log.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
			return Object.class;
		}
		return (Class) params[index];
	}
分享到:
评论

相关推荐

    Springside-core-4.1.0/Springside-core-4.1.0

    它通过标准化的项目结构、精心管理的依赖和一系列实用工具,降低了Spring应用的入门难度。如果你在寻找一个稳定且易用的Java开发框架,SpringSide-core-4.1.0无疑是一个值得考虑的选择。同时,对于那些已经使用...

    springside-core-4.2.2.GA(含关联的test.jar)

    pom.xml配置 ...mvn install:install-file -DgroupId=org.springside -DartifactId=springside-core -Dversion=4.2.2.GA -Dfile=./springside-core-4.2.2.GA.jar -Dpackaging=jar -DgeneratePom=true

    springside-core-4.3.0.jar

    springside-core-4.3.0.jar 最新版springside-core的jar包

    springside-core-4.1.0.GA.jar

    总的来说,springside-core-4.1.0.GA.jar为Java开发者提供了强大的工具和实践,它简化了基于Spring的应用开发,提升了项目的整体质量和开发效率。无论你是初学者还是经验丰富的开发者,都能从中受益。

    有springside4.2.3-GA.jar 包

    1. **Core**:这是SpringSide的核心模块,包含了一些通用的工具类和配置,如日志管理、代码生成器、属性文件管理等,为项目提供了基础服务。 2. **Demo**:示例模块,提供了各种应用场景的实例,帮助开发者快速理解...

    springside-core-4.2.2.GA.pom

    springside-core-4.2.2.GA.pom springside-core-4.2.2.GA.pomspringside-core-4.2.2.GA.pomspringside-core-4.2.2.GA.pomspringside-core-4.2.2.GA.pom

    springside-core-4.2.3-GA.jar

    springside-core-4.2.3-GA.jar,如果jar包不完整,可能会导致异常:LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context

    springside-core-4.2.2.GA相关jar包

    3. **自动化构建工具**:SpringSide通常与Maven或Gradle等自动化构建工具结合使用,以管理项目的依赖关系和构建过程。在4.2.2.GA版本中,可能已经优化了这些集成,确保开发者可以轻松地构建和测试项目。 4. **代码...

    springside3-core-3.0.4 源码

    5. **工具类集**:springside3-core-3.0.4提供了一套丰富的工具类,涵盖了日志、反射、集合操作等多个方面,这些都是日常开发中的常用工具,理解其源码有助于提高代码质量。 6. **测试框架集成**:项目包含了对...

    springside-4.0.0.GA.zip

    这个名为“springside-4.0.0.GA.zip”的压缩包,就像是JavaEE开发者的春天,带来丰富的知识与技术启示。 SpringSide项目始于对Spring Framework的深度理解和实践,它的核心在于简化Spring的使用,让开发者能够更...

    springside-3.2.2源码

    通过分析其源码,我们可以深入理解 SpringSide 的设计理念和实现方式,进一步提升我们的 Java 开发技能。 一、项目结构与模块解析 SpringSide 3.2.2 的源码结构清晰,主要包括以下模块: 1. `core`:核心模块,...

    springside-core-4.2.2.GA.jar

    springside-core-4.2.2.GA.jar

    springside-core-4.2.2.GA

    SpringSide是基于Spring框架的一个轻量级的开发工具集,它旨在简化Spring应用的开发过程,提供了一系列实用的工具类和配置模版,使得开发者可以更加高效地进行Java企业级应用的开发。本文将对"Springside-core-4.2.2...

    springside-core-4.2.2

    springside-core-4.2.2.GA.jar 包,需要的可以自行下载,

    springside-3.3.4 源码(无JAR)

    在本文中,我们将深入探讨 springside-3.3.4 版本的源码,理解其设计思想,以及如何利用它来提升我们的开发效率。 首先,SpringSide 项目的核心是模块化设计。3.3.4 版本包含了若干个模块,如 Core、Module、Tool ...

    springside-core-4.0.0.RC3.jar

    备份自己用,太难找了,springside-core.4.0.0.RC3 。

    springside-core-4.1.1-SNAPSHOT.jar

    可用的jar包,springside-core-4.1.1-SNAPSHOT.jar 免费下载

    springside-core-3.3.4.jar

    springside-core-3.3.4.jar包,上传方便自己后续使用。

Global site tag (gtag.js) - Google Analytics