我使用以下代码获得NotSerializableException,我不知道原因:
private class Entry implements Serializable {
public int mProgress, mReps;
public int mDays;
public String[] mEntry;
public Entry() {
mEntry = new String[2];
mProgress = mReps = 0;
mDays = 0;
}
}
private HashMap<String,Entry> mEntries;
FileOutputStream fos = mApp.openFileOutput("FOO", Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(mEntries);
os.close();
我发现上述4行之一发生的异常:
保存异常java.io.NotSerializableException:com.company.app.classname
答案 0 :(得分:4)
我怀疑Entry
是一个内部类,因此会引用“外部”类,这可能不是可序列化的。
尝试以下方法:
private static class Entry implements Serializable {
...
}
请注意static
关键字。
编辑:
正如@Henrik指出的那样,查看确切的异常消息和堆栈跟踪通常会提供重要的线索。在这种情况下,异常显示了不可序列化的类的名称(com.company.app.classname
),并且该类未在Entry
类中引用,这使我怀疑这是一个内部类。