您的位置:首页 > 编程语言 > Java开发

Java项目实战反射工具类

2012-09-23 13:42 351 查看
package com.utils;

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

public class ReflectUtils {



/**

* 获得超类的参数类型,取第一个参数类型

* @param <T> 类型参数

* @param clazz 超类类型

*/

public static <T> Class<T> getClassGenricType(final Class clazz) {

return getClassGenricType(clazz, 0);

}



/**

* 根据索引获得超类的参数类型

* @param clazz 超类类型

* @param index 索引

*/

public static Class getClassGenricType(final Class clazz, final int index) {

Type genType = clazz.getGenericSuperclass();

if (!(genType instanceof ParameterizedType)) {

return Object.class;

}

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

if (index >= params.length || index < 0) {

return Object.class;

}

if (!(params[index] instanceof Class)) {

return Object.class;

}

return (Class) params[index];

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: