您的位置:首页 > 其它

获取泛型类中的泛型参数的类型

2014-09-23 03:07 281 查看
泛型类只是定义了一个泛型,还没有传递一个类型给这个泛型,所以他是一个空的占位符而已。

如果要实实在在的得到这个泛型的类型,那就必须传递一个东西给他。

所以获取泛型类型,有两种方式,一种通过参数传递,一种通过子类继承的方式传递。

publci class Dao<T> {

private
Class<T> clazz;

//第一种方式,无参数的方式,也就是通过子类继承的方式,把子类传递给父类

// Dao<Student> dao = new StudentDao();

public Dao(){

Type type = this.getClass().getGenericSuperclass();

if (type
instanceof ParameterizedType) {

ParameterizedType paramType = (ParameterizedType) type;

Type[] args
= paramType.getActualTypeArguments();

if (args != null && args.length>0) {

Type
arg
= args[0];

if (arg
instanceof Class) {

this.clazz= (Class<T>)
arg;

// System.out.println(this.clazz);

}

}

}

}

//第二种方式,通过参数传递

// Dao<Student> dao = new Dao<>(Student.class);

public Dao(Class<T> clazz) {

this.clazz = clazz;

// System.out.println (this.clazz) ; //输出 Student

}

}

--------------------------------------

public class StudentDao extends Dao<Student>
{

public StudnetDao(){ }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: