Java泛型为什么这不起作用?

时间:2010-02-07 03:08:40

标签: java generics

为什么我不能使用以下泛型创建地图?

Map<Class<K extends Item>, K> classMap;

2 个答案:

答案 0 :(得分:7)

因为Map已经被广泛化了 - 创建引用时的工作是填写type参数。除非这是在使用K参数化的方法中,否则编译器将不知道应该用K替换什么(如果它在参数化方法中,则不能有K extends Item在身体中 - K已经延伸Item,或者它没有延伸。

新类型参数可以包含在类和方法的签名中,隐含的承诺是稍后将填充它们。他们不能进入声明。

答案 1 :(得分:1)

在这里,您要创建Map的实例,而不是定义它。 K需要是一个特定的类。