小编典典

如何从文件反序列化到其他类

java

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

而且由于接收文件的系统是不同的,所以我没有相同的packageA.Changelog类,而是packageB.Changelog具有完全相同的结构但使用不同的包的类。

当我使用

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

从文件中读出我有一个ClassCastException

如何避免这种异常?是否仅在接收列表时需要在其他系统中创建相同的包结构?


阅读 190

收藏
2020-11-19

共1个答案

小编典典

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

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

  2. 创建一个接口(当然,在两台计算机上都使用相同的包),然后将其发送到客户端计算机上。您所有的类都可以在不同的程序包中实现此接口。例如,您的接口可以命名为Loggable,它应该具有声明的所有方法,这些方法现在都在ChangeLog类中。

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

然后,实现类Loggable的所有类都可以转换为该类型。我希望这有帮助

2020-11-19