如何访问Collection Generic Type类

时间:2009-09-23 16:39:46

标签: java generics type-erasure

我有一个这样的课程:

public class SubClass <T> extends SuperClass<Collection<T>>{
   public Class<T> getInner() {
      // What goes here?
   }
}

SuperClass只是一个泛型类。我的问题是如何获得对Class对象的访问权以便返回它?由于类型擦除,我似乎无法做到这一点。

任何帮助?

1 个答案:

答案 0 :(得分:4)

确切地说,类型擦除意味着您必须明确地执行此操作。

基本上,您需要SubClass在构造函数中将Class<T>作为参数,然后挂起。如果T实际上是(例如)List<String>,那么你仍然可以在那里遇到类型擦除问题。有关此问题和解决方法的详细信息,请参阅Neal Gafter's blog,并了解实施的Guice 2.0 TypeLiteral class