可能重复:
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];
但是这不起作用,给出了编译问题。
答案 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")
注释来禁止警告。