我需要提供课程。我有一个Foo类,所以如果我提供Foo.class
它工作正常但我需要提供List<Foo>.class
但这不存在。
如何传递List Type类?
感谢任何帮助。
答案 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>.class
,T.class
,List<Foo>[].class
和T[].class
都无效(假设T
是类型参数)。