我正在尝试将地图保存到文件中,但我得到了java.io.NotSerializableException
。我知道这意味着我必须在类中实现Serializable。问题是,即使实现了Serializable,它也会抛出错误。
存储代码:
private void storePoints(Map<String,WifiPoint> list) throws IOException{
// store in file
FileOutputStream fos = context.openFileOutput("points", Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(list);
os.close();
}
Wifipoint:
public class WifiPoint implements Serializable{
private static final long serialVersionUID = 2;
public String ssid;
public String bssid;
public String capabilities;
public double latitude;
public double longitude;
public int level;
}
更新: 真正的解决方案是: 我需要在一个单独的文件中声明WifiPoint,并在另一个类中声明它。
抱歉,我没有正确地为任何人提供正确的答案
答案 0 :(得分:2)
您正在尝试序列化Map
检查您正在使用的地图类是Serializable
注意:HashMap
为Serializable
,因此请尽可能切换到该地址。
答案 1 :(得分:1)
java.io.Serializable
java.io.Serializable
答案 2 :(得分:1)
我需要在一个单独的文件中声明Wifi Point,而不是在另一个类中声明它。
答案 3 :(得分:0)
您正在将Map对象传递给storePoints方法,检查您传递的Map对象是否实现Serializable。 (如果您使用的是HashMap,java.util包的TreeMap肯定会实现Serializable。)
答案 4 :(得分:0)
检查Map是否未实现Serialization接口:
All Known Implementing Classes:
AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, ConcurrentSkipListMap,
EnumMap, HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons, Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport, TreeMap,
UIDefaults, WeakHashMap
来源:http://docs.oracle.com/javase/6/docs/api/java/util/Map.html