public abstract class BaseDAO<T> { // 定义一个变量来接收泛型的类型 private Class<T> clazz = null; // public BaseDAO(){ // // } // 获取T的Class对象,获取泛型的类型,泛型是在被子类继承时才肯定 { //获取当前BaseDAO的子类继承的父类中的泛型 // getClass()获取子类的类型 // getGenericSuperclass()用来获取当前类的父类的类型 // ParameterizedType表示的是带泛型的类型 Type genericSuperclass = this.getClass().getGenericSuperclass(); ParameterizedType paramType = (ParameterizedType) genericSuperclass; Type[] typeArguments = paramType.getActualTypeArguments();//获取了父类的泛型参数 clazz = (Class<T>) typeArguments[0];//泛型的第一个参数 } }
this关键字是指子类的实例java