📄 genericsutils.java
字号:
package org.langsin.core.utils;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Generics的常用类,提供一些通过反射,获得父类范型参数的类型
*
* @author 不落的太阳
*
*/
public class GenericsUtils {
private GenericsUtils() {
}
/**
* 通过反射,获得定义Class声明时的父类的范型参数类型 例public UserManager extends
* HibernateGenericDao<User>
*
* @param clazz
* @param index
* @return class org.langsin.framework.model.User@hashcode()的字符串
*/
public static Class getSuperClassGenricType(Class clazz) {
return getSuperClassGenricType(clazz, 0);
}
/**
* 通过反射,获得定义Class声明时的父类的范型参数类型
*
* @param clazz
* @param index
* @return
*/
public static Class getSuperClassGenricType(Class clazz, 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];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -