我可以使用泛型声明映射数组来指定映射类型:
private Map<String, Integer>[] myMaps;
但是,我不知道如何正确实例化它:
myMaps = new HashMap<String, Integer>[count]; // gives "generic array creation" error
myMaps = new HashMap[count]; // gives an "unchecked or unsafe operation" warning
myMaps = (Map<String, Integer>[])new HashMap[count]; // also gives warning
如何实例化这个映射数组而不出现编译器错误或警告?
Update:
谢谢大家的回复。我最终同意了列表建议。
严格来说不是对您问题的回答,但您是否考虑过使用List
反而?
List<Map<String,Integer>> maps = new ArrayList<Map<String,Integer>>();
...
maps.add(new HashMap<String,Integer>());
似乎工作得很好。
See Java 理论与实践:泛型陷阱 http://www.ibm.com/developerworks/java/library/j-jtp01255.html详细解释为什么不鼓励将数组与泛型混合。
Update:
正如德鲁在评论中提到的,使用收藏 http://java.sun.com/javase/6/docs/api/java/util/Collection.html接口而不是List
。如果您需要更改为Set
,或其他子接口之一Collection
。示例代码:
Collection<Map<String,Integer>> maps = new HashSet<Map<String,Integer>>();
...
maps.add(new HashMap<String,Integer>());
从这个起点开始,你只需要改变HashSet
to ArrayList
, PriorityQueue
,或任何其他实现的类Collection
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)