`

通过反射, 获得Class定义中声明的父类的泛型参数的类型

阅读更多
/**
	 * 通过反射, 获得Class定义中声明的父类的泛型参数的类型.
	 * 如无法找到, 返回Object.class.
	 * 
	 * 如public UserDao extends HibernateDao<User,Long>
	 *
	 * @param clazz clazz The class to introspect
	 * @param index the Index of the generic ddeclaration,start from 0.
	 * @return the index generic declaration, or Object.class if cannot be determined
	 */
	
	public static Class getSuperClassGenricType(final Class clazz, final int index) {

		Type genType = clazz.getGenericSuperclass();

		if (!(genType instanceof ParameterizedType)) {
			logger.warn(clazz.getSimpleName() + "'s superclass not ParameterizedType");
			return Object.class;
		}

		Type[] params = ((ParameterizedType) genType).getActualTypeArguments();

		if (index >= params.length || index < 0) {
			logger.warn("Index: " + index + ", Size of " + clazz.getSimpleName() + "'s Parameterized Type: "
					+ params.length);
			return Object.class;
		}
		if (!(params[index] instanceof Class)) {
			logger.warn(clazz.getSimpleName() + " not set the actual class on superclass generic parameter");
			return Object.class;
		}

		return (Class) params[index];
	}

 

分享到:
评论
4 楼 snowing11812 2010-10-25  
但这个似乎连注释都和springside的一模一样....
3 楼 maoweiwer 2010-10-23  
zhuyingxi 写道
怎么把springside的工具类都copy过来了

笑话,这样的工具类都写得差不多,就一定是springside出的吗。
2 楼 rere43 2010-10-22  
JAVA反射免费资源下载:
http://www.51px.asia/px/jiangtang.aspx
1 楼 zhuyingxi 2010-10-22  
怎么把springside的工具类都copy过来了

相关推荐

    654.652.JAVA基础教程_反射-获取运行时类的父类及父类的泛型(654).rar

    本教程聚焦于通过反射获取运行时类的父类以及父类中的泛型信息。这是一项高级技能,对理解和调试复杂的Java应用程序尤其有用。 首先,我们来理解什么是反射。在Java中,类、接口和方法等都是由类对象表示的,这些类...

    Java泛型的用法及T.class的获取过程解析

    Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析。 一、泛型的基本概念 泛型是Java 5中...

    myreflect.rar 反射和泛型使用源码

    Java编程语言中的反射和泛型是两个非常重要的概念,它们为开发者提供了强大的工具来操作类、接口、对象以及参数类型。在"myreflect.rar"这个压缩包中,我们可以期待找到一系列关于这两个主题的源代码示例,这将有助...

    反射处理java泛型_.docx

    总结来说,`ReflectionUtil`工具类提供了一种方便的方式来处理Java泛型和反射操作,包括从`Type`获取`Class`对象,创建对象实例,以及获取泛型参数类型等。在实际开发中,正确、安全地使用反射对于提高代码的灵活性...

    博客《反射(2):泛型相关周边信息获取》对应源码

    泛型是在定义类、接口或方法时使用的类型参数,用尖括号 `&lt;T&gt;` 表示。`T` 是一个占位符,代表一个具体的类型,在实际使用时会被具体的类型如 `String` 或 `Integer` 替换。泛型的主要好处在于编译时检查类型安全,...

    泛型编程小实例(以List为例)

    泛型编程是Java、C#等面向对象编程语言中的一项重要特性,它允许在定义类、接口和方法时使用类型参数,从而实现代码的复用并提供编译时的类型安全检查。本教程将以Java中的List接口为例,深入探讨泛型编程的概念、...

    java 泛型入门 实例

    - 也可以使用类型参数`&lt;?&gt;`来表示父类的泛型类型不确定,这样在子类中可以操作父类的方法,但不能访问具体的泛型类型信息。 7. **野指针警告** - 在未使用泛型的旧代码中,可能会出现“可能的不匹配类型”警告。...

    Java-泛型.ppt

    - 泛型方法的类型参数可以与类的泛型参数相同,但互不影响。 #### 四、类型通配符 类型通配符允许我们编写更灵活的代码。常见的类型通配符包括: - **无界通配符**:`&lt;?&gt;`,表示任何类型。 - **上界通配符**:`...

    第十三章 泛型程序设计

    - 泛型方法可以在类的任何地方定义,与类的泛型参数无关,如`public &lt;T&gt; void printList(List&lt;T&gt; list) {...}`,`printList()`方法接受任何类型的列表。 4. **通配符(Wildcard)** - 用于表示对类型参数的限制,...

    实例讲解Java泛型编程的快速入门

    - 泛型方法的类型参数独立于类的类型参数,因此可以在非泛型类中定义泛型方法。 5. **类型擦除** - Java泛型在编译后会进行类型擦除,这意味着在运行时,所有的泛型类型信息都会被替换为它们的边界类型或`Object`...

    Java泛型PPT教案学习.pptx

    例如,一个通用的交换两个元素的方法可以声明为`public static &lt;T&gt; void swap(T[] arr, int i, int j)`,这里的T是方法的泛型参数,允许传入任何类型的数组。 4. **泛型通配符**: 在处理多种类型但又不想为每种...

    Java1.5泛型指南中文版

    在运行时,可以使用类字面量(Class Literals)来获取泛型类型的 Class 对象,这在反射和动态类型操作中尤为重要。 #### 9. 更多通配符的乐趣 通配符不仅限于基本使用,还可以进行复杂的匹配,例如捕获(Wildcard ...

    Java1.5泛型指南

    在定义泛型类或接口时,声明的类型参数被称为形式类型参数(Formal Type Parameter),而在创建实例或调用方法时使用的具体类型则称为实际类型参数(Actual Type Parameter)。如上例中的`T`是形式类型参数,而`...

    泛型完整代码.zip

    1. **泛型类**:泛型类是在类定义时引入类型参数,例如`public class Box&lt;T&gt; { T item; }`,这里的`T`就是一个类型参数,代表任意类型。在实例化泛型类时,我们可以指定具体的类型,如`Box&lt;String&gt; box = new Box();...

    java技术之泛型的学习

    2. 泛型类:泛型类是在类定义中使用类型参数的,例如`ArrayList&lt;T&gt;`。泛型类的实例化需要提供具体的类型,如`ArrayList&lt;String&gt;`。 3. 泛型方法:除了泛型类,我们还可以在方法中使用类型参数,比如`public &lt;T&gt; ...

    java泛型,java知识

    - 泛型(Generics)允许在定义类、接口和方法时声明类型参数,从而创建泛型类、泛型接口和泛型方法。这使得代码可以处理多种类型的对象,而不必为每种类型都创建单独的类或方法。 - 类型参数通常以大写字母表示,...

    Generics_in_the_Java_Programming_Language.pdf

    7. 类字面量作为运行时类型令牌:可以使用.class语法获取泛型类型的Class对象,这对于反射和类型检查很有用。 8. 通配符捕获:是一个高级特性,它允许泛型代码使用某些特定的通配符类型,这在复杂的泛型代码中非常...

    泛型.rar

    在Java中,泛型允许我们在定义类、接口和方法时使用类型参数,而不是具体的类型,从而实现对多种类型的支持。这样做可以防止在运行时出现ClassCastException,并在编译时就捕获潜在的类型不匹配错误。 1. **泛型的...

    泛型DAO模型设计课堂笔记

    结合泛型和反射,我们可以创建通用的DAO实现,通过运行时动态获取类型参数,执行相应的数据库操作。反射API允许程序在运行时检查类、接口、字段和方法的信息,并可动态调用方法或修改字段值。泛型的使用可以确保在...

Global site tag (gtag.js) - Google Analytics