为什么我不能使用以下泛型创建地图?
Map<Class<K extends Item>, K> classMap;
答案 0 :(得分:7)
因为Map
已经被广泛化了 - 创建引用时的工作是填写type参数。除非这是在使用K
参数化的方法中,否则编译器将不知道应该用K
替换什么(如果它在参数化方法中,则不能有K extends Item
在身体中 - K
已经延伸Item
,或者它没有延伸。
新类型参数可以包含在类和方法的签名中,隐含的承诺是稍后将填充它们。他们不能进入声明。
答案 1 :(得分:1)
在这里,您要创建Map
的实例,而不是定义它。 K
需要是一个特定的类。