我正在尝试使我的 class 可序列化。我所有的类都是,但是对于其他我无法找到其用途的类(例如com.sun.java.swing.plaf.windows.XPStyle,WClipboard),它仍然抛出NotSerializableException。

我该怎么办?在序列化或使它们可序列化时如何绕过这些类?

解决了

问题出在我的JFrames和JDialogs中使用的LookAndFeel中(XPStyle的问题)。第二个(WClipboard),它是我从这里得到的第三方类使用的。此类使用剪贴板。

我通过删除剪贴板字段使transient和LookAndFeel无法管理。

最佳答案

如果您不希望序列化数据以进行持久性或传输,则可以声明这些transient
但是,如果您需要持久存储这些对象(类)中的数据,通过TCP / UDP进行传输等,那么您可能不希望对类进行extend并实现自己的解释,以便可以声明扩展类Serializable

最后一种选择是使用其他Serialization方法,例如 FST Kryo 等提供的方法。这些序列化库通常可以使用Reflection序列化默认Java实现无法实现的对象。

09-08 10:57