可用于带泛型的base父类设计
private Class<T> clazz;
//通过构造函数获得,触发该构造函数对象的父类,判断父类是否为参数化的类型,然后获取父类中的实际类型参数的实体类的字节码文件
public BaseDaoImpl(){
//获得触发该构造函数类的字节码文件的类本身
Type type = this.getClass().getGenericSuperclass();
//判断该类是否为参数化的类型<参数化的类型的类名:ParameterizedType>
if(type instanceof ParameterizedType){
//type类本身没有任何方法,所以将type强转为参数化的类型,方便调用子类方法
ParameterizedType ptype = (ParameterizedType)type;
//获取实际的类型参数
Type[] types = ptype.getActualTypeArguments();
//将数组中的第一个元素转成Class类型,给class赋值
//Class<? extends Type> clazz = types[0].getClass();
clazz = (Class)types[0];
}
}