带有generics的地图数组问题

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

我知道我能做到:

Map map = new HashMap(); 

所以我应该能够:

 Map[] maps = new HashMap[10]; 

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

这是java中generics的怪癖。 你必须像这样声明数组:

 HashMap[] maps = new HashMap[10]; 

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

 for(int i=0;i<10;i++) { maps[i] = new HashMap(); } 

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