【问题标题】:java.io.NotSerializableException thrown even when serializable is implemented即使实现了可序列化,也会抛出 java.io.NotSerializableException
【发布时间】:2013-02-06 21:09:00
【问题描述】:

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

抱歉,我没有正确输入代码以便任何人得到正确答案

【问题讨论】:

  • 请发送堆栈跟踪。并检查您的Map 的具体实现是什么。可能它是不可序列化的。
  • 等等,我认为需要一个构造函数?
  • 不,你不需要构造函数。看看 cowls 的回答(也是 AlexR)
  • 是的,这很可能是地图的问题。

标签: java android serializable


【解决方案1】:

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

注意:HashMapSerializable,因此请尽可能切换到它。

【讨论】:

  • 这修复了它。我不知道 HashMap 是 Map 的实现,而 Map 本身不是 Serializable
【解决方案2】:
  • 检查你是否真的实现了java.io.Serializable
  • 检查一下 您要序列化的地图也实现了java.io.Serializable

【讨论】:

    【解决方案3】:

    我需要在一个单独的文件中声明 WifiPoint,而不是在另一个类中声明它。

    【讨论】:

      【解决方案4】:

      您正在将 Map 对象传递给 storePoints 方法,检查您传递的 Map 对象是否实现了 Serializable。 (如果你使用HashMap,java.util包的TreeMap肯定会实现Serializable。)

      【讨论】:

        【解决方案5】:

        检查 Map 没有实现序列化接口:

        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

        【讨论】:

          猜你喜欢
          • 2012-01-03
          • 1970-01-01
          • 1970-01-01
          • 2014-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-05
          相关资源
          最近更新 更多