我正在尝试使我的 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实现无法实现的对象。