安卓无法序列化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 楼答案
检查此链接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)
设置列表实现