在Java中,如何将对象列表转换为字节数组?

时间:2013-01-03 18:26:07

标签: java caching

  

可能重复:
  Converting any object to a byte array in java

我有一个需要缓存的类。缓存API提供缓存byte[]的接口。我的类包含List<Author>字段,其中Author是另一个类。我将List<Author>转换为byte[]进行缓存的正确方法是什么?并从缓存中检索byte[]以重建List<Author>

有关Author类的更多详细信息:它非常简单,只有两个String字段。一个String字段可能为null

3 个答案:

答案 0 :(得分:19)

作者类应该实现Serializable

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

然后使用ObjectInputStream对其进行反序列化并转换回来。

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

答案 1 :(得分:2)

使Author类可序列化,并将列表写入由ObjectOutputStream支持的ByteArrayOutputStream

答案 2 :(得分:1)

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

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