2012-01-24 62 views
3

我已经在java中学习了一些序列化。我的基本理解是,它是一种持久化对象状态并将其写入流的机制,以便我们可以在任何时间点或任何其他未创建对象的“JVM”中使用它。 现在假设如果我有一个类A并创建一个类A的实例,即对象a,将它序列化并将其存储在文件“A.ser”中。我将文件复制到其他系统并反序列化文件“A.ser”以获取对象a的持久状态。但是在那种情况下,A的类定义应该出现在我反序列化对象的另一个系统中!有什么办法可以节省类定义并将其传递给其他系统,以便其他JVM不知道类A是什么,直到我们反序列化文件获得类定义并在那里重建类?java序列化 - 持久化类定义

回答

0

让我们考虑对于反序列化你不需要类。但是在反序列化之后你会怎么做,因为你不能用类定义来执行对象呢?

这就是反序列化在找不到类定义时抛出ClassNotFoundException的原因。您可以将您的类定义作为jar分发。

+0

感谢您的回答 – NINCOMPOOP

0

与序列化不同,您必须将类文件分开存储,并对依赖项进行评估并将其捆绑在一起。

那么,你就必须序列化对象,发现它是的.class文件,检测相关类,也和和找到自己的的.class文件直到你已经解决了所有的依赖性都解决了。

正如你可能想象的那样,这不是一个简单的任务,所以把这些东西和你的类的jar文件一起发送并做好。

0

一个想法是让接收系统从远程registry下载类定义。你必须使用反射来获得课程的名称。只是一个猜测,我从来没有尝试过。