我在一个类中有一个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的所有函数上都得到了Entry >界面:entrySet()getKey()getValue()

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

我也尝试过从FacilityMachines扩展WriteFile并得到相同的结果。

最佳答案

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

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

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

07-24 09:52