java - 如何从文件反序列化到不同的类

标签 java file serialization package deserialization

我序列化了一个 ArrayList<packageA.Changelog> list到一个文件并将该文件传输到另一台机器上的另一个系统。

而且因为接收文件的是不同的系统,所以我没有相同的 packageA.Changelog类,而是一个 packageB.Changelog它具有完全相同的结构,但在不同的包中。

当我使用

ArrayList<packageB.Changelog> changelogs = (ArrayList<packageB.Changelog>)ois.readObject();

从文件中读出一个 ClassCastException .

如何避免这个异常?我是否只需要在另一个系统中创建相同的包结构来接收列表?

最佳答案

是的,您可以做三件事之一。

  1. 用相同的包名创建相同的类

  2. 创建一个接口(interface)(当然在两台机器上的同一个包中)并将其发送到客户端机器上。即使在不同的包中,您的所有类都可以实现此接口(interface)。例如,您的接口(interface)可以命名为 Loggable,并且它应该声明现在 ChangeLog 类中的所有方法。

  3. 或者最后不使用“ChangeLog”类,而是完全避免使用它,而是使用默认情况下可序列化的 HashMap。而且您不必将任何东西运送到您的客户端(其他)机器。您将能够序列化 ArrayList 并将其转换回其他机器上的对象。

所有实现类 Loggable 的类都可以转换为该类型。 希望对您有所帮助

关于java - 如何从文件反序列化到不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994054/

相关文章:

java - 异常处理程序卡在 tomcat 上

c# - 存在、读写只需一步

c - 从 .txt 文件中读取一行并将其拆分为 float

.net - 将 JSON 对象反序列化到 .NET 列表中

python - 使用 Python 创建嵌套的 JSON 请求

c# - 将 DateTime 序列化为二进制

java - 为什么我遇到 java.util.InputMismatchException 问题?

java - 如何从自定义数据源创建图表或表格

java - 在享元模式中将静态实例分配给非静态实例

ruby - 从文件输出中删除额外的换行符