不是“不安全的操作”错误:不兼容的类型对象无法转换为Entry

问题描述 投票:0回答:1

我在一个类中有一个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并获得相同的结果。

java dictionary hashmap
1个回答
2
投票

您需要使用正确的类型返回FacilityMachines类getMap()方法上的映射

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

    public Map<String, Boolean> getMap(){
        return map;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.