Java获得泛型类中T的实例
获得泛型类代码:
//获得泛型T的具体类
public class GetGenericUtil<T> {
//得到泛型类T
public Class getMyClass(){
System.out.println(this.getClass());
//class com.dfsj.generic.UserDaoImpl因为是该类调用的该法,所以this代表它
//返回表示此 Class 所表示的实体类的 直接父类 的 Type。注意,是直接父类
//这里type结果是 com.dfsj.generic.GetInstanceUtil<com.dfsj.generic.User>
Type type = getClass().getGenericSuperclass();
// 判断 是否泛型
if (type instanceof ParameterizedType) {
// 返回表示此类型实际类型参数的Type对象的数组.
// 当有多个泛型类时,数组的长度就不是1了
Type[] ptype = ((ParameterizedType) type).getActualTypeArguments();
return (Class) ptype[0]; //将第一个泛型T对应的类返回(这里只有一个)
} else {
return Object.class;//若没有给定泛型,则返回Object类
}
}
}
测试类代码:
public class UserDaoImpl extends GetGenericUtil<User>{
public User getUser() throws Exception{
Object obj = this.getMyClass().newInstance();//得到泛型类,然后创建一个新实例。
if(obj instanceof User){
return (User)obj;
}else{
return null;
}
}
public static void main(String[] args) throws Exception {
User u = new UserDaoImpl().getUser();
System.out.println(u+"----");
}
}
还没有评论,来说两句吧...