首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java泛型:获取Class<Collection<T>>?

Java泛型:获取Class<Collection<T>>?
EN

Stack Overflow用户
提问于 2012-03-01 07:59:47
回答 3查看 4.3K关注 0票数 7

我在使用泛型时遇到了问题。给出以下示例:

代码语言:javascript
运行
复制
class A<T> {
  public A(Class<T> myType){
  }
}

class B<E> extends A<Collection<E>> {
  public B(Class<E> myEType){
    super(???);
  }
}

什么?应该是吗?Collection.class不能工作...Collection<E>.class也不是。(Class<Collection<E>>)Collection.class不工作...

如果有java泛型专家,我需要帮助...:/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-01 08:09:38

由于类型擦除的原因,除了Collection.class之外,您不可能获得Class<Collection<E>>。您必须使用不安全的强制转换将Collection.class强制转换为Class<Collection<E>> --具体地说,(Class<Collection<E>>) (Class) Collection.class就可以完成这项工作。

票数 10
EN

Stack Overflow用户

发布于 2012-03-01 08:05:33

代码语言:javascript
运行
复制
class A<T> {
    public A(Class<T> myType){
    }
}

class B<E> extends A<Collection<E>> {
    public B(Class<Collection<E>> myEType){ // <-- this is the changed line
        super(myEType);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2012-03-01 08:12:44

试试这个:

代码语言:javascript
运行
复制
class A<T> {
  public A(Class<?> myType){
  }
}

class B<E> extends A<Collection<E>> {
  public B(Class<E> myEType){
    super(myEType);
  }
}

如果满意,请在此答案上打上正确的记号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9508663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档