Java 不断得到一个IonotSeriazableException,我做错了什么?

Java 不断得到一个IonotSeriazableException,我做错了什么?,java,serialization,io,objectoutputstream,implements,Java,Serialization,Io,Objectoutputstream,Implements,因此,我有一个类,它具有以下属性 private String name; private int counter; private DateFormat df; private DecimalFormat def; private ArrayList<Bike> bike; static String[] titles = {"some,items,here"}; 私有字符串名称; 专用int计数器; 专用数据格式df; 专用DecimalFormat def; 私人Arra

因此,我有一个类,它具有以下属性

private String name;
private int counter;

private DateFormat df;
private DecimalFormat def;

private ArrayList<Bike> bike;
static String[] titles = {"some,items,here"};
私有字符串名称;
专用int计数器;
专用数据格式df;
专用DecimalFormat def;
私人ArrayList自行车;
静态字符串[]标题={“部分,项目,此处”};
所有这些都已经初始化,然后我声明
公共类Motor扩展AbstractTableModel实现可序列化

但是当我使用ObjectOutputStream时,我仍然会遇到一个IONotSerializableException,我现在知道这是为什么了吗?

所有这些字段都是可序列化的,可能的例外是
Bike

这意味着:

  • 自行车不可序列化。或者它可能是可序列化的,但实际bike对象的一个字段不是完全可序列化的
  • 还有其他一些你没有给我们看的不可序列化的马达领域
  • AbstractTableModel或其超类具有不可序列化的字段

异常消息和完整的stacktrace应该提供问题真正根源的线索。

AbstractTableModel
是否有任何不可序列化的成员?例如,您是否添加了不实现
Serializable
Externalizable
的侦听器?
Bike
serializable吗?哦,把
Bike
s放在
Motor
里面违反了面向对象的原则。
电机
应该包含一个
仓鼠轮
,它包含一个
仓鼠
,每个人都知道仓鼠不能骑
自行车
s.Mike,不必担心违规,因为这是另外一回事,但并不完全是那样。另一方面,AbstractDataModel被用作我的JTable的tablemodel,我不确定它们是否有任何不可序列化的成员。但是,除了电机问题,我是否在这里做了一些serializable无法实现的错误?java.io.NotSerializableException:com.apple.laf.AquaPainter$DirectOSXSurfacePainter位于java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)atWell这是相当明显的。。。它告诉您它正在尝试序列化某个GUI框架对象(异常消息中给出的类名)。现在,您必须弄清楚类中哪里有对其中一个对象的引用,或者引用它们的某个对象。一般来说,寻找对GUI框架对象的引用——它们不应该被序列化,而应该声明为
transient
,以防止出现这种情况。