对于一个基本的类
public class BaseDao<T>{T findOne() {return T;}
}
它的子类
public class StudentDao extends BaseDao<StudentDao.Student>{public static class Student{}}
如何获得当前类对应的泛型参数呢?
方法一 JDK
public static void main(String[] args) throws Exception {// 可以拿到带有泛型信息的父类Type genericSuperclass = StudentDao.class.getGenericSuperclass();// 这里要判断一手如果你的父类确实有泛型信息if (genericSuperclass instanceof ParameterizedType parameterizedType) {Type[] typeArguments = parameterizedType.getActualTypeArguments();System.out.println(typeArguments[0]);}
}
方法二 spring提供的方式
通过GenericTypeResolver获得.
public static void main(String[] args) throws Exception {Class<?> t = GenericTypeResolver.resolveTypeArgument(StudentDao.class, BaseDao.class);System.out.println(t);
}