繁体   English   中英

Java序列化

[英]Java Serializing

我正在尝试将FilerDetailsExcelFileBean类型的对象列表(项目A的程序包A)转换为字节数组。在项目A中成功转换后,我将字节数组传递给Web服务,然后再次将字节数组转换为FilerDetailsExcelFileBean类型的对象列表(项目B的程序包B)在项目B中。为了从字节数组中获取对象列表,我在两个项目中都创建了相同的文件FilerDetailsExcelFileBean,因为程序包B由于设计模式无法导入程序包A文件。

将ListOfObject转换为字节数组的代码:

 ByteArrayOutputStream bos = new ByteArrayOutputStream();
 ObjectOutputStream oos = new ObjectOutputStream(bos);
 oos.writeObject(List);
 byte[] bytes = bos.toByteArray();

将字节数组转换为ListOfObject的代码:

ByteArrayInputStream bis = new ByteArrayInputStream(filerMarkingFile.getRequestFile());
ObjectInputStream ois = new ObjectInputStream(bis);
List<FilerDetailsExcelFileBean> f = (List<FilerDetailsExcelFileBean>) ois.readObject();

错误是: FilerDetailsExcelFileBean classNotFound异常

注意: FilerDetailsExcelFileBean文件类型的列表在不同的项目A中(将ListOfObject转换为字节数组的代码:)和FilerDetailsExcelFileBean文件在不同的项目B中(将字节数组转换为ListOfObject的代码:)。并且FilerDetailsExcelFileBean不可能导入由于某些原因,项目B。

我知道这个问题(问题是当我们将arrayList转换为字节数组时,使用了不同的持久性文件,当我们将其转换回list ob对象时,使用了不同的持久性文件),但是我需要解决这个问题。什么是最好的解决这个问题

这是行不通的,一个packageA.FilerDetailsExcelFileBean不是同一类packageB.FilerDetailsExcelFileBean ,所以你不能序列的第一个,然后反序列化的第二个。 类名甚至类的布局都是相同的事实还不够。 如果要使用Java序列化来做到这一点,则这些类必须完全相同-它们也必须位于同一包中。

除了使用Java序列化之外,还可以使用其他机制-例如,将对象转换为JSON或XML,然后在另一端进行解析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM