有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓无法序列化Hashmap、java。伊奥。NotSerializableException

public class Common implements Serializable{

    private static HashMap<Integer,List<LevelList>> levelListMap = new HashMap<>();

    public static Map<Integer, List<LevelList>> getLevelListMap(Context context) {

        File file = new File(context.getDir("data", MODE_PRIVATE), "map");
        ObjectInputStream inputStream = null;
        try {
            inputStream = new ObjectInputStream(new FileInputStream(file));
            levelListMap = (HashMap<Integer, List<LevelList>>) inputStream.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return levelListMap;
    } ...
}

我无法序列化hashmap。我一直得到java.io.NotSerializableException levelListMap = (HashMap<Integer, List<LevelList>>) inputStream.readObject();

public class LevelList implements Serializable{

    public int id;
    public String title;
    public String imgurl;
    public String songurl;
    public String songtext;
    boolean isFavourite;

    public void release() {

    }


    public void setFavourite(boolean favourite) {
        isFavourite = favourite;
    }

    public boolean isFavourite(){
        return isFavourite;
    }

}

共 (1) 个答案

  1. # 1 楼答案

    检查此链接How to serialize a list in Java。列表的标准实现,即ArrayList、LinkedList等可序列化

    如果将列表声明为ArrayList<LevelList> levelList = new ArrayList<LevelList>();等列表子类型之一,那么它应该是可即时序列化的。否则,您需要以一种安全的方式进行强制转换,例如按照该应答线程中Theodore Murdock的建议,使用<T extends List<Foo> & Serializable> setFooList(T list)设置列表实现