【发布时间】:2023-04-07 00:49:01
【问题描述】:
我目前正在开发一个 Web 应用程序,我想让 Java 对象在服务器上持久化,以便可以随时检索它们。由于数据库对我的应用程序来说太过分了,所以我选择了最简单的持久化 java 对象的方法:序列化为 xml 或字节。不幸的是,我使用的大部分代码是我无法修改的 java 类,并且这些类没有实现接口“可序列化”。关于序列化这些类的对象以及我自己的类的其他交互对象,我有哪些选择?
【问题讨论】:
-
如果您可以将它们子类化并在子类中实现 Serializable,那么您就可以开始了。另一种方法是实现一种自定义方式来自己序列化它们。你的问题有点宽泛,无法在这里回答。但是作为一个简短的示例:如果 Path 始终由同一台机器反序列化,则可以将其序列化为 String。另请理解,java.io.Stream 等类根本无法序列化。您必须找到一种方法让您的代码从其他东西重新创建 Stream。
-
我认为在我的情况下,解决方案是通过提供我自己的 Serializable 接口的 writeObject 和 readObject 方法的实现来实现一种自定义方式来自己序列化对象。你会如何建议包装原来的第三方类?通过扩展此类或创建一个引用第三方类对象的新类?
-
我会选择一个接口
Serializer<T>,它会提供两种方法:一个Serializable toSerializable(T objectToSerialize)和一个T fromSerializable(Serializable serializedObject),为您需要序列化的每个类提供唯一的可序列化类。然后将所有序列化程序包装在可以找到往返方式的 SerializationService/Factory 中。因此,在不可序列化的类和序列化的文件之间只有一个中间 (DAO) 层。
标签: java serialization io jaxb object-serialization