package cn.zlz.genirus;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class BaseDao<T> { //泛型
private Class clzz;//为了获取 Dao操作的类
public BaseDao() {
//由于继承,这里获取的是子类
Class child = this.getClass();
//获取参数化泛型类型
ParameterizedType type = (ParameterizedType) child.getGenericSuperclass();
//获取泛型的类型
Type[] types = type.getActualTypeArguments();
System.out.println(types[0]);//获取 User类型,可以再
this.clzz = (Class) types[0];
}
public T find() {
return null;
}
}
<pre name="code" class="java">package cn.zlz.genirus;
public class UserDao extends BaseDao<User> {//继承泛型,传入泛型类型
//调用的时候直接 UserDao dao = new UserDao(); //不需要再指定 User类型
}