代码:
public void saveFile(HashMap hashTable) {
for (Employee e : hashTable.values()) {
//...
}
}
当我尝试运行此代码时,收到以下错误:
incompatible types: Object cannot be converted to Employee
for (Employee e : hashTable.values()) {
任何帮助都将不胜感激。
答案 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
引用。