将对象转换为字节数组,反之亦然,无需序列化

时间:2011-10-23 03:05:39

标签: java serialization object bytearray

我有一个java项目,我必须保存每个运行的数据供以后使用。教授希望我们使用RandomAccessFile来执行此操作,因此我必须将对象转换为字节,以便将它们存储在RAF中。主要问题是,如果我们使用Serializable,他会扣除积分,所以我的问题是:

有没有办法将对象转换为字节数组而反之没有序列化?

我不想要一个完整的代码只是一种方法来了解如何做到这一点。

编辑:

谢谢大家的建议,我最终将对象字段转换为字节并将其写入RAF。

3 个答案:

答案 0 :(得分:1)

您可以直接向RAF编写基元和一些对象(字符串,字节数组以及将取消装箱的布尔和整数等盒装基元)。如果你有一个更大的对象,可以将其分解为RAF可以接受的内容。例如,如果您有一个字符串列表,则循环遍历它们并使用writeUTF写入每个字符串。请记住,你必须重读它,所以你必须使用某种标题。例如,您可能希望在元素之前编写列表的长度。

答案 1 :(得分:1)

如果您无法在课程中使用Serializable,则必须使用Reflection找到该对象的所有字段。

之后,您可以按照Matthew Flashen的建议将这些字段值写入RandomAccessFile。

答案 2 :(得分:1)

也许xml以文本格式表示对象是个好主意。您可以为每个对象指定唯一ID,并使用<ref>id</ref>来显示关系。