【问题标题】:Foo.class works but List<Foo>.class doesn't [duplicate]Foo.class 有效,但 List<Foo>.class 不[重复]
【发布时间】:2016-04-27 22:16:03
【问题描述】:

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

我怎样才能通过列表类型的类?

感谢任何帮助。

【问题讨论】:

  • 你是对的,List&lt;Foo&gt;.class 不存在,因为类型擦除。只有List.class

标签: java


【解决方案1】:

由于type erasure,您不能。在运行时,泛型类型参数被删除,不再可用。因此,尽管List&lt;Foo&gt; 可能在编译时作为泛型存在,但在运行时您将只有List.class,类型为Class&lt;List&gt;

来自Java Language Specification, version 8, section 15.8.2

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

例如List&lt;Foo&gt;.classT.classList&lt;Foo&gt;[].classT[].class都是无效的(假设T是一个类型参数)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多