Java Generics:获取类<collection <t>&gt;?</collection <t>

时间:2012-02-29 23:59:47

标签: java generics

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

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 generics guru,我需要帮助......:/

3 个答案:

答案 0 :(得分:9)

由于类型擦除,除了Class<Collection<E>>之外,你不可能获得Collection.class。您必须使用不安全的强制转换来将Collection.class投射到Class<Collection<E>> - 具体而言,(Class<Collection<E>>) (Class) Collection.class将完成此任务。

答案 1 :(得分:1)

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);
    }
}

答案 2 :(得分:0)

试试这个:

class A<T> {
  public A(Class<?> myType){
  }
}

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

如果满意,请将此答案标记为正确。