带有泛型的地图数组的问题

fas*_*ava -1 java arrays generics map

可能重复:
Java泛型和数组初始化
如何在Java中实例化地图数组?

我知道我能做到:

Map<String, Object> map = new HashMap<String, Object>();
Run Code Online (Sandbox Code Playgroud)

所以我应该能够:

Map<String, Object>[] maps = new HashMap<String, Object>[10];
Run Code Online (Sandbox Code Playgroud)

但这不起作用,给出编译问题.

sbl*_*ndy 5

这是java中泛型的怪癖.你必须像这样声明数组:

HashMap<String, Object>[] maps = new HashMap[10];
Run Code Online (Sandbox Code Playgroud)

稍后您可以亲自创建每个地图,例如:

for(int i=0;i<10;i++)
{ 
    maps[i] = new HashMap<String,Object>();
}
Run Code Online (Sandbox Code Playgroud)

这是擦除的结果.该数组是一个HashMaps 数组.不保留泛型类型参数.你会得到一个警告,但它会编译,你可以用@SuppressWarning("unchecked")注释来抑制警告.