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

时间:2011-09-08 04:57:17

标签: java arrays generics map

  

可能重复:
  Java generics and array initialization
  How does one instantiate an array of maps in Java?

我知道我能做到:

Map<String, Object> map = new HashMap<String, Object>();

所以我应该能够:

Map<String, Object>[] maps = new HashMap<String, Object>[10];

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

1 个答案:

答案 0 :(得分:5)

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

HashMap<String, Object>[] maps = new HashMap[10];

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

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

这是erasure的结果。该数组是HashMap s的数组。不保留泛型类型参数。您将收到有关此问题的警告,但它会进行编译,您可以使用@SuppressWarning("unchecked")注释来禁止警告。