Java反射之getGenericSuperclass()用法
2021-03-05 05:29
标签:bsp 工具类 泛型 utils 无法 params csu object 子类 父类 子类 使用: ClassUtils.isAssignable:是否可以转成某个类型 问题:某个方法 返回值是类型Object,但是实际上返回值 可能是List 解决办法: 补充:Assignable,可分配的,可转让的; Java反射之getGenericSuperclass()用法 标签:bsp 工具类 泛型 utils 无法 params csu object 子类 原文地址:https://www.cnblogs.com/zouhong/p/14332688.htmlpackage com.itheima.mytest;
public class Person
package com.itheima.mytest;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Student extends Person
class com.itheima.mytest.Person
com.itheima.mytest.Person
/**
*
*/
package com.idea.utils;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* 泛型工具
*
* @author zhailiang
*
*/
public class GenericUtils {
/**
* 获取目标class的第一个泛型参数的类型
*
* @param clazz
* @return
*/
@SuppressWarnings("rawtypes")
public static Class getGenericClass(Class clazz) {
return getGenericClass(clazz, 0);
}
/**
* 获取目标class的指定位置的泛型参数的类型
*
* @param clazz
* @param index
* 泛型参数的位置,第一个参数为0
* @return
*/
@SuppressWarnings("rawtypes")
public static Class getGenericClass(Class clazz, int index) {
Type t = clazz.getGenericSuperclass();
if (t instanceof ParameterizedType) {
Type[] params = ((ParameterizedType) t).getActualTypeArguments();
return (Class) params[index];
}
throw new RuntimeException("无法获得泛型的类型");
}
}
下一篇:C++中私有继承公有化
文章标题:Java反射之getGenericSuperclass()用法
文章链接:http://soscw.com/index.php/essay/60312.html