HashMap(key: String, value: ArrayList) 返回一个 Object 而不是 ArrayList?

2024-02-24

我将数据存储在 HashMap 中(键:String,值:ArrayList)。我遇到问题的部分声明了一个新的 ArrayList“current”,在 HashMap 中搜索字符串“dictCode”,如果找到,则将 current 设置为返回值 ArrayList。

ArrayList current = new ArrayList();      
if(dictMap.containsKey(dictCode)) {
    current = dictMap.get(dictCode);   
}

“current =...”行返回编译器错误:

Error: incompatible types
found   : java.lang.Object
required: java.util.ArrayList

我不明白这一点...HashMap 是否返回一个对象而不是我存储在其中作为值的 ArrayList?如何将此对象转换为 ArrayList?

谢谢。


HashMap 声明在该范围内是如何表达的?它应该是:

HashMap<String, ArrayList> dictMap

如果不是,则假定它是对象。

例如,如果您的代码是:

HashMap dictMap = new HashMap<String, ArrayList>();
...
ArrayList current = dictMap.get(dictCode);

这是行不通的。相反,你想要:

HashMap<String, ArrayList> dictMap = new HashMap<String, Arraylist>();
...
ArrayList current = dictMap.get(dictCode);

泛型的工作方式是类型信息可供编译器使用,但在运行时不可用。这称为类型擦除。 HashMap 的实现(或任何其他泛型实现)正在处理 Object。类型信息用于编译时的类型安全检查。请参阅泛型文档 http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html.

另请注意ArrayList http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html也作为泛型类实现,因此您可能也想在那里指定一个类型。假设你的ArrayList包含你的班级MyClass,上面的行可能是:

HashMap<String, ArrayList<MyClass>> dictMap
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HashMap(key: String, value: ArrayList) 返回一个 Object 而不是 ArrayList? 的相关文章

随机推荐