本帖最后由 Mrng8888 于 2012-7-25 00:33 编辑
- //终于想明白了
- public abstract class ABaseDaoImpl<T> {
- protected Class<T> clazz;
- public ABaseDaoImpl() {
- // 1.得到父类类型(相对于ABaseDaoImpl的子类来说,因为子类构建实例时借助父类构造器)
- Type type = this.getClass().getGenericSuperclass();
- //2.返回表示此类型实际类型参数的 Type 对象的数组
- Type[] at = ((ParameterizedType) type).getActualTypeArguments();
- //得到泛型参数
- clazz = (Class) at[0];
- System.out.println("clazz = " + clazz);
- //结果为:clazz = class test1.Test5$Student }
- }
- public class BaseDaoImpl extends ABaseDaoImpl<Student> {
- }
- public class Student {
- }
- public class Test {
- public static void main(String[] args) {
- new BaseDaoImpl();
- }
- }
复制代码 |
|