此段代码的出处是Mybatis或者是Ibatis的BaseDao对象,
以对象的全限定名作为sqlMapper的命名空间名称.
解析:1,Class的父类是Type;
2,将Type转换为
ParameterizedType;
3,有三个方法:
package com.zoo.thread;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Generic extends Dao<String> {
public static void main(String[] args) {
Generic ge = new Generic();
Class<?> clazz = ge.getGenericClass();
System.out.println(clazz.getName());
}
}
class Dao<T>{
protected Class<?> getGenericClass(){
Type type = this.getClass().getGenericSuperclass();
ParameterizedType pt = (ParameterizedType)type;
Type[] t = pt.getActualTypeArguments();
return (Class<?>)t[0];
}
}