Java Generics:获取一个Class <Collection <T >>?

Yan*_*gne 7 java generics

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

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

class B<E> extends A<Collection<E>> {
  public B(Class<E> myEType){
    super(???);
  }
}
Run Code Online (Sandbox Code Playgroud)

什么 ???应该 ? Collection.class不工作...... Collection<E>.class都没有. (Class<Collection<E>>)Collection.class不工作...

如果有一个java泛型大师,我需要帮助......:/

Lou*_*man 10

由于类型擦除,你不可能得到一个Class<Collection<E>>除外Collection.class.你将不得不使用不安全的类型转换投下Collection.classClass<Collection<E>>-具体而言,(Class<Collection<E>>) (Class) Collection.class将做的工作.

  • 我同意类型擦除。但是像 '(Class&lt;Collection&lt;E&gt;&gt;)Collection.class' 这样的转换会在 eclipse 中产生 '无法从 Class&lt;Collection&gt; 转换为 Class&lt;Collection&lt;E&gt;' :( (2认同)