不是“不安全操作”错误:不兼容的类型无法将对象转换为Entry <string,boolean =“”>

时间:2019-02-22 23:56:41

标签: java dictionary hashmap

我在一个类中有一个Map,其中存储了一个String键和一个boolean值。然后,我从函数getMap()返回地图。

public class FacilityMachines {
    private static Map<String, Boolean> map = new HashMap<String, Boolean>();

    public Map getMap(){
         return map;
    }

在下面的类中,我试图获取该映射,然后将其保存到外部文件中,还在那里实例化FacilityMachines

public class WriteFile {
    FacilityMachines fm = new FacilityMachines();
    private Map<String, Boolean> m = new HashMap<String, Boolean>();

}

WriteFile中,我试图将地图解析为新的HashMap:

public void saveFacilityInfo() {
    for (Map.Entry<String, Boolean> j: fm.getMap().entrySet()){
            String s = j.getKey();
            boolean b = j.getValue();
            oStream.println(i + ": " + s + " = " + b + ". ");
        }
}

oStream只是我的PrintWriter的变量。

以上内容会产生Object cannot be converted to Entry<String, Boolean>错误。

如果我将saveFacilityInfo的方法签名更改为saveFacilityInfo(FacilityMachines fm),然后使用fm变量尝试在行for (Map.Entry<String, Boolean> j: fm.getMap().entrySet())处获取地图,那么我得到一个cannot find symbol界面上的所有功能上的EntryentrySet()getKey()getValue()

在有人问之前,我已经导入了HashMapMap,并且还尝试仅使用import java.util.*;来导入所有内容,以防万一。

我还尝试从FacilityMachines扩展WriteFile并获得相同的结果。

1 个答案:

答案 0 :(得分:2)

您需要使用正确的类型通过FacilityMachines类的getMap()方法返回地图

public class FacilityMachines {
    private static Map<String, Boolean> map = new HashMap<String, Boolean>();

    public Map<String, Boolean> getMap(){
        return map;
    }
}