可串行化问题

时间:2011-02-07 13:24:27

标签: java serialization

如何通过网络传递不可序列化的对象?

2 个答案:

答案 0 :(得分:2)

如果有严重的原因导致对象无法序列化,则无法通过网络传递。例如,如果您的类包含无法序列化的成员(流,线程等)

但是如果该类不可序列化的原因是它的作者只是没有用这种方式标记它并且您无法访问类的源代码以使其可序列化,那么您有以下方法。

  1. 使用字节码工程库动态修改类字节代码:将其标记为implements Serializable,然后通过网络发送。
  2. 编写自己的序列化机制。它可以完全自定义创建或使用第三方库。如果您自己实现此类机制,则可以使用反射API。非常好的第三方库之一是XStream。据我所知,它不要求将类标记为可序列化。它只是创建包含整个对象图的XML。也可以使用java.io.Externalizable
  3. 实现自定义机制
  4. 您给定的课程的子类。将子类标记为Seriablizable。实现自己的writeObject()和readObject()方法。

答案 1 :(得分:0)

使用像XStream这样的库。特别是XStream会将您的代码转换为xml,然后可以通过网络发送并在另一侧重新构建。 Java内置的Serialization机制有很多替代方法,大多数都不需要Serializable接口。