将哈希映射传递给函数 - Java

时间:2015-06-04 22:17:54

标签: java hashmap

代码:

public void saveFile(HashMap hashTable) {

    for (Employee e : hashTable.values()) {
            //...
    }
}

当我尝试运行此代码时,收到以下错误:

 incompatible types: Object cannot be converted to Employee 
           for (Employee e : hashTable.values()) {

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您使用了gfr->fl_handler(gfr->filecontent, bytesRcvd, gfr->fDesc); 的原始格式,因此HashMap会返回原始hashTable.values(),返回Collection个,但不能直接分配给Object Employee变量。

使用HashMap的通用格式:

public void saveFile(HashMap<?, Employee> hashTable) {

public void saveFile(HashMap<YourKey, Employee> hashTable) {

然后values()将返回Collection<Employee>,您可以从中提取Employee

或者你甚至可以使用Map接口,编码接口:

public void saveFile(Map<YourKey, Employee> hashTable) {

答案 1 :(得分:0)

如果地图的值应为员工,请将签名更改为:

public void saveFile(Map<TheKeyType,Employee> hashTable) {

其中TheKeyType应替换为您的密钥类型(可能是String或Integer)。

当您使用原始地图类型时,hashTable.values()将返回原始Collection,因此对其进行迭代将为您提供Object引用,而不是Employee引用。