12

可能重复:
在java中将任何对象转换为字节数组

我有一个需要缓存的类。缓存 API 提供了一个缓存接口byte[]。我的班级包含一个字段,另一个班级List<Author>在哪里。Author我转向缓存的正确方法是List<Author>什么byte[]?并byte[]从缓存中检索以重建List<Author>?

关于类的更多细节Author:它非常简单,只有两个String字段。一个String领域是可能的null

4

3 回答 3

28

作者类应该实现Serializable

然后,您可以使用ObjectOutputStream序列化对象并将ByteArrayOutputStream其写入字节。

然后使用 ObjectInputStream 反序列化并转换回来。

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(bos);
    oos.writeObject(list);
    byte[] bytes = bos.toByteArray();
于 2013-01-03T18:30:49.253 回答
2

使Author类可序列化并将列表写入ObjectOutputStreamByteArrayOutputStream.

于 2013-01-03T18:31:00.613 回答
1

使您的课程可序列化;在 ByteStream 上创建一个 ObjectStream 并将您的列表写入 ObjectStream。将字节缓冲区从 ByteStream 传递到您的缓存 API。

从缓存中检索时,您将反转该过程。从缓存 API 返回的 byte[] 创建一个 ByteStream;从 ByteStream 创建一个 ObjectStream;从 ObjectStream 中读取您的集合。

于 2013-01-03T18:31:19.563 回答