我已经在java中学习了一些序列化。我的基本理解是,它是一种持久化对象状态并将其写入流的机制,以便我们可以在任何时间点或任何其他未创建对象的“JVM”中使用它。 现在假设如果我有一个类A并创建一个类A的实例,即对象a,将它序列化并将其存储在文件“A.ser”中。我将文件复制到其他系统并反序列化文件“A.ser”以获取对象a的持久状态。但是在那种情况下,A的类定义应该出现在我反序列化对象的另一个系统中!有什么办法可以节省类定义并将其传递给其他系统,以便其他JVM不知道类A是什么,直到我们反序列化文件获得类定义并在那里重建类?java序列化 - 持久化类定义
3
A
回答
1
你描述的是一个ClassLoader。为了能够在类路径中没有A的JVM中加载类A,需要使用ClassLoader加载类(及其依赖项)。
ObjectInputSTream然后必须委托给自定义类加载器来解析它的类。
查看https://forums.oracle.com/forums/thread.jspa?threadID=1149865的最后一篇文章,其中有一个示例。春季也有such an ObjectInputStream。
0
让我们考虑对于反序列化你不需要类。但是在反序列化之后你会怎么做,因为你不能用类定义来执行对象呢?
这就是反序列化在找不到类定义时抛出ClassNotFoundException的原因。您可以将您的类定义作为jar分发。
0
与序列化不同,您必须将类文件分开存储,并对依赖项进行评估并将其捆绑在一起。
那么,你就必须序列化对象,发现它是的.class文件,检测相关类,也和和找到自己的的.class文件直到你已经解决了所有的依赖性都解决了。
正如你可能想象的那样,这不是一个简单的任务,所以把这些东西和你的类的jar文件一起发送并做好。
0
一个想法是让接收系统从远程registry下载类定义。你必须使用反射来获得课程的名称。只是一个猜测,我从来没有尝试过。
相关问题
- 1. Wicket - 持久化和非持久JPA实体的序列化
- 2. java自定义类不可序列化
- 3. Java持久化和可序列化的连词
- 4. 自定义Java序列化
- 5. 序列化类型定义?
- 6. 使Java Swing应用程序持久化
- 7. Java bean持久化模式
- 8. 序列化持久性收集与JMS序列化
- 9. 是否支持自定义序列化器/反序列化器
- 10. 持久化类变量
- 11. 轨持久化类变量
- 12. Qt中的持久化类
- 13. DTOs与序列化持久实体
- 14. 序列化MDI Winforms的持久性
- 15. 在持久化计算列
- 16. Java自定义序列化和反序列化的位大小定义
- 17. 序列化支持类VB.NET
- 18. C#自定义序列化和反序列化的简单类
- 19. 序列化/反序列化用户定义的类变量?
- 20. 持久队列:序列化/反序列化node-amqp中的队列对象
- 21. Java持久性(Ebean)将生成的值序列化到Json
- 22. java序列化与xml定义
- 23. 自定义Java消息序列化
- 24. 自定义序列化器中的自定义序列化?
- 25. Java如何将类定义或检测为可序列化类?
- 26. 如何防止持久化对象被序列化?
- 27. jQuery:在序列化之前持久化表单值?
- 28. 使用JMSSerializer反序列化的关联持久化Doctrine实体
- 29. 在执行之间持久化/序列化QPrinter(QPrintDialog)
- 30. 用于XML序列化的持久化BO
感谢您的回答 – NINCOMPOOP