public abstract class BaseDaoImpl<T> implements BaseDao<T> {
private Class<T> clzz;
public BaseDaoImpl(){
/**
* getGenericSuperclass()是获取父类的Class对象
* ParameterizedType和Class类是一个意思,而ParameterizedType是jdk1.5出来的,它封装了类的泛型信息
*/
//this.getClass()获取到的是子类实例的Class对象,最好的证明方法就是当BaseDaoImpl为abstract权限,this.getClass()还有值
ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();
clzz = (Class<T>)type.getActualTypeArguments()[0];//获取泛型类型,由于泛型可能有多个,所以返回的是个数组类型,我们取第一个泛型类型
}
}
1.Type和Class表达的是同一个东西,但是Type是jdk1.5才出来的,支持泛型,所以说Type里封装了类的泛型信息
2.由于泛型可以有多个例如 class BaseDaoImpl<A,B,C> 所以