实现:父类是泛型类,子类继承父类,
这样在父类中就能得到泛型的对象了。是子类继承父类的时候,设置的泛型。
如果例如都在com包下
父类是:public class Person<T>
子类是:public class Student extends Person<Student>
getSuperclass()获得该类的父类:com.Person
getGenericSuperclass()获得父类(如果有泛型,把泛型也带上):com.Person<com.Student>
getGenericSuperclass()如果父类不是带有泛型的类。则返回的结果和getSuperclass()是一样的结果。
得到泛型参数类型。
this.getClass().getGenericSuperclass()得到父类(如果有泛型,得到带有泛型的父类)
((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]得到泛型参数的第一个参数类型
getActualTypeArguments()该方法是得到泛型类型数组,[0]表示得到第一个值
=====================示例:======================
父类:
public class Dao<T> {
private Class<T> entity;
/**
*
*/
public Dao() {
super();
// TODO Auto-generated constructor stub
System.out.println("class:"+this.getClass());
entity=(Class<T>) ((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
System.out.println(entity.getName());
}
public Class<T> getEntity(){
return entity;
}
}
子类:
public class UserDao extends Dao<User>{
public void test1(){
System.out.println("name:"+this.getEntity().getName());
}
}
javabean:
public class User {
String name;
String id;
}
测试:
public class TestMain {
public static void main(String[] args) {
UserDao dao=new UserDao();
dao.test1();
}
}
=====================示例:======================
这样在父类中就能得到泛型的对象了。是子类继承父类的时候,设置的泛型。
如果例如都在com包下
父类是:public class Person<T>
子类是:public class Student extends Person<Student>
getSuperclass()获得该类的父类:com.Person
getGenericSuperclass()获得父类(如果有泛型,把泛型也带上):com.Person<com.Student>
getGenericSuperclass()如果父类不是带有泛型的类。则返回的结果和getSuperclass()是一样的结果。
得到泛型参数类型。
this.getClass().getGenericSuperclass()得到父类(如果有泛型,得到带有泛型的父类)
((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]得到泛型参数的第一个参数类型
getActualTypeArguments()该方法是得到泛型类型数组,[0]表示得到第一个值
=====================示例:======================
父类:
public class Dao<T> {
private Class<T> entity;
/**
*
*/
public Dao() {
super();
// TODO Auto-generated constructor stub
System.out.println("class:"+this.getClass());
entity=(Class<T>) ((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
System.out.println(entity.getName());
}
public Class<T> getEntity(){
return entity;
}
}
子类:
public class UserDao extends Dao<User>{
public void test1(){
System.out.println("name:"+this.getEntity().getName());
}
}
javabean:
public class User {
String name;
String id;
}
测试:
public class TestMain {
public static void main(String[] args) {
UserDao dao=new UserDao();
dao.test1();
}
}
=====================示例:======================