java序列化——持久化类定义

NIN*_*OOP 5 java serialization persistent

我对 java 中的序列化有了一些了解。我的基本理解是,它是一种机制,可以将对象的状态持久化并将其写入流,以便我们可以在后面的任何时间点或未创建对象的任何其他“JVM”中对其进行扩充和使用。现在假设我有一个类 A 并创建类 A 的一个实例,即对象 a ,将其序列化并将其存储在文件 "A.ser" 中。我将文件复制到其他系统并反序列化文件“A.ser”以获得对象 a 的持久状态。但在那种情况下,A 的类定义应该存在于我反序列化对象的另一个系统中!有什么办法可以保存类定义并将其传输到另一个系统,

JB *_*zet 1

你所描述的是一个类加载器。为了能够在类路径中没有 A 的 JVM 中加载类 A,您需要使用 ClassLoader 来加载该类(及其依赖项)。

然后,ObjectInputSTream 必须委托给自定义类加载器来解析其类。

有关执行此操作的示例,请参阅https://forums.oracle.com/forums/thread.jspa?threadID=1149865中的最后一篇文章。Spring也有这样的ObjectInputStream