java获取泛型参数类型

well_allen 2014-01-19 10:44:24

代码如下:
public class Demo<T> {
private Class<T> clazz;
public Demo(){
//如何获取T的类型,并将T的类型赋值给clazz
}
}

该类不是用于做继承的,而是直接实例化调用,如 Demo d = new Demo<User>();(所有采用下面的代码行不同
  ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();
clazz = (Class<T>) pt.getActualTypeArguments()[0];

请问该怎么在Demo的构造方法中获取T的类型,并将T的类型赋值给clazz呢?
...全文
1381 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
sunbo624 2014-01-22
  • 打赏
  • 举报
回复
肯定得不到的
乔不思 2014-01-21
  • 打赏
  • 举报
回复
感觉二楼的 就是 一般解决这个问题的思路
  • 打赏
  • 举报
回复
JDK 中的泛型是语法糖,仅在编译期起作用,到运行期就没用了,这种称为类型擦拭
lcf 2014-01-19
  • 打赏
  • 举报
回复
public class Demo<T> {
    private Class<T> clazz;
    public Demo(Class<T> clazz) {
        this.clazz = clazz;
    }
}
这是最简单的方法。不要看它好像很傻帽,其实这是java里最正统的方法。因为<T>在运行时是会被抹去的,所以如果你不直接拿到Class<T>的引用,单凭T是拿不到的。
kakashi8841 2014-01-19
  • 打赏
  • 举报
回复
2L 说的有道理。你只能是用Class来拿。 或者是通过全限定类名。然后Class.forName(className);

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧