查找泛型父类
对于泛型父类的查找,有助于base类的建立。
public class Father<T> {
private Class clazz;
public Father() {
this.clazz = null;
Class c = getClass();
Type t = c.getGenericSuperclass();
//getGenericSuperclass 返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type
//Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
//ParameterizedType 表示参数化类型
//getActualTypeArguments() 返回表示此类型实际类型参数的 Type 对象的数组。
if (t instanceof ParameterizedType) {
Type[] p = ((ParameterizedType) t).getActualTypeArguments();
this.clazz = (Class<T>) p[0];
System.out.print(p[0]);
}
else{
System.out.println("类型不匹配1...");
}
}
public void save() {
System.out.println("Type为: " + clazz.getSimpleName());
}
}
-----------------
public class Son extends Father<Integer> {
public static void main(String[] args) {
Son userdao=new Son();
userdao.save();
}
}