【发布时间】:2011-02-14 06:28:12
【问题描述】:
我对泛型感到困惑。您可以声明如下字段:
Class<Collection<String>> clazz = ...
您可以将此字段指定为:
Class<Collection<String>> clazz = Collection<String>.class;
但是,这会产生错误:
标记“>”的语法错误,此标记后应为无效
所以看起来.class 运算符不适用于泛型。所以我尝试了:
class A<S> { }
class B extends A<String> { }
Class<A<String>> c = B.class;
也不行,生成:
类型不匹配:无法从
Class<Test.StringCollection> to Class<Collection<String>>转换
现在,我真的不明白为什么这不起作用。我知道泛型类型没有被具体化,但在这两种情况下,它似乎都是完全类型安全的,而无需访问运行时泛型类型。有人出主意吗?
【问题讨论】:
标签: java