即使实现了serializable,也会抛出java.io.NotSerializableException

时间:2013-02-21 13:54:33

标签: java android serializable

我正在尝试将地图保存到文件中,但我得到了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,并在另一个类中声明它。

抱歉,我没有正确地为任何人提供正确的答案

5 个答案:

答案 0 :(得分:2)

您正在尝试序列化Map检查您正在使用的地图类是Serializable

注意:HashMapSerializable,因此请尽可能切换到该地址。

答案 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

你可以试试这个:Java: Writting/Reading a Map from disk