可能的重复:
Java 泛型和数组初始化 https://stackoverflow.com/questions/470198/java-generics-and-array-initialization
如何在 Java 中实例化一组映射? https://stackoverflow.com/questions/1493162/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];
但这不起作用,会出现编译问题。
这是java中泛型的一个怪癖。您必须像这样声明数组:
HashMap<String, Object>[] maps = new HashMap[10];
稍后您可以亲自创建每个地图,例如:
for(int i=0;i<10;i++)
{
maps[i] = new HashMap<String,Object>();
}
这是一个后果erasure http://en.wikipedia.org/wiki/Generics_in_Java#Type_erasure。该数组是一个数组HashMap
s。不保留泛型类型参数。你会收到一个关于此的警告,但它会编译,你可以使用以下命令抑制警告@SuppressWarning("unchecked")
注解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)