Foo.class可以工作,但List <foo> .class没有

时间:2016-04-27 14:04:40

标签: java

我需要提供课程。我有一个Foo类,所以如果我提供Foo.class它工作正常但我需要提供List<Foo>.class但这不存在。

如何传递List Type类?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

由于type erasure,你不能。在运行时,泛型类型参数将被删除,并且不再可用。因此,虽然List<Foo>可能在编译时作为泛型存在,但在运行时,您只能List.class,类型为Class<List>

来自Java Language Specification, version 8, section 15.8.2

  

如果命名类型是类型变量(第4.4节)或参数化类型(第4.5节)或者元素类型是类型变量或参数化类型的数组,则是编译时错误。

例如,List<Foo>.classT.classList<Foo>[].classT[].class都无效(假设T是类型参数)。