首页 > 编程语言 > 详细

java中取泛型对象

时间:2019-09-27 09:56:41      阅读:91      评论:0      收藏:0      [点我收藏+]

1.方案1:没有继承关系的

 

public class A<T> {    
Class<T> clazz;
public A(T... ts){
this. clazz = getTClass(ts);
}
static <T> Class<T> getTClass(@SuppressWarnings("unchecked") T... index) {
        String name = "[Ljava.lang.Object;";
        if (index != null)// 如果index参数不为空
            name = index.getClass().getName();// 根据index找到对应类型(数组)的名称
        StringBuffer sbf = new StringBuffer();
        for (int i = 2; i < name.length() - 1; i++)// 循坏重新放置到sbf里面
            sbf.append(name.charAt(i));
        name = sbf.toString();// 更新name变量
        try {
            return (Class<T>)Class.forName(name);// 若不出错,class存在即返回Class<?>
        } catch (ClassNotFoundException e) {
            System.err.println(e.getMessage());// 若出错,class不存在即返回null
        }
        return null;
    }
}

  

2.方案2:存在继承关系

 public class DbAccess<T> implements IDbAccess<T> {

 

private Class<T> getTClass() {
Class<T> tClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[0];
return tClass;
}
}

 

java中取泛型对象

原文:https://www.cnblogs.com/liucuiqiang/p/11595685.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!