如何通过网络传递不可序列化的对象?
最佳答案
如果存在对象不可序列化的严重原因,则不能通过网络传递它。例如,如果您的类包含无法序列化的成员(流、线程等)
但是如果该类不可序列化的原因是它的作者没有这样标记它并且您无权访问类的源代码以使其可序列化,您可以采用以下方法。
- 使用字节码工程库动态修改类字节码:将其标记为
implements Serializable
,然后通过网络发送。 - 编写您自己的序列化机制。它可以完全自定义创建或使用第三方库。如果您自己实现这种机制,您可以使用反射 API。 XStream 是非常好的第三方库之一。据我所知,它不需要将该类标记为可序列化。它只是创建包含整个对象图的 XML。也可以使用 java.io.Externalizable 实现自定义机制
- 对给定的类进行子类化。将子类标记为可序列化。实现您自己的 writeObject() 和 readObject() 方法。
关于java - 序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921805/