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

Sio*_*e21 3 java generics

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

Map<Class<K extends Item>, K> classMap;
Run Code Online (Sandbox Code Playgroud)

dan*_*ben 7

因为Map已经泛化 - 创建引用时的工作是填写类型参数.除非这是在参数化的方法中K,否则编译器将不知道K应该替换什么(并且如果它在参数化方法中,你不能K extends Item在体内 - K或者已经扩展Item,或者它没有).

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