【发布时间】:2015-09-15 08:14:56
【问题描述】:
我正在尝试使我的课程可序列化。我所有的类都是,但它仍然会抛出 NotSerializableException 对于我找不到它的用法的其他一些类(例如 com.sun.java.swing.plaf.windows.XPStyle、WClipboard)。
在序列化或使它们可序列化时,我可以做什么以及如何绕过这些类?
已解决
问题在于我在 JFrames 和 JDialogs 中使用的 LookAndFeel(XPStyle 的问题)。第二个(WClipboard),它被我从这里得到的第三方类使用。此类使用剪贴板。
我创建了剪贴板字段 transient 和 LookAndFeel,我无法管理,只是将其删除。
【问题讨论】:
-
一般来说,与 UI 关联的类(如 XPStyle 和 WClipboard)是故意不可序列化的,因为它们可以与无法序列化的操作系统特定(即本机)对象交互。
-
当您使用可序列化并且嵌套在扩展 Swing 组件的类中的内部类时,通常会出现这种情况。内部类与自身一起序列化外部类,即使这不是您的意图。解决方案:静态。
-
请看我在下一个答案中的评论。我知道原因但不知道解决方案:-)
标签: java serialization serializable notserializableexception