我有一个需要缓存的类。缓存API提供缓存byte[]
的接口。我的类包含List<Author>
字段,其中Author
是另一个类。我将List<Author>
转换为byte[]
进行缓存的正确方法是什么?并从缓存中检索byte[]
以重建List<Author>
?
有关Author
类的更多详细信息:它非常简单,只有两个String
字段。一个String
字段可能为null
。
答案 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中读取您的集合。