可能重复:
在Java中将任何对象转换为字节数组
我有一个需要被缓存的类。缓存API提供了一个接口来缓存byte[]
。我的类包含一个字段作为List<Author>
,其中Author
是另一个类。我该如何正确地将List<Author>
转换为byte[]
以进行缓存?并从缓存中检索byte[]
以重构List<Author>
?
关于Author
类的更多细节:它非常简单,只有两个String
字段。一个String
字段可能为null
。
可能重复:
在Java中将任何对象转换为字节数组
我有一个需要被缓存的类。缓存API提供了一个接口来缓存byte[]
。我的类包含一个字段作为List<Author>
,其中Author
是另一个类。我该如何正确地将List<Author>
转换为byte[]
以进行缓存?并从缓存中检索byte[]
以重构List<Author>
?
关于Author
类的更多细节:它非常简单,只有两个String
字段。一个String
字段可能为null
。
作者类应该实现Serializable
接口。
这样,您就可以使用ObjectOutputStream
将对象序列化并使用ByteArrayOutputStream
以字节形式编写它。
然后使用ObjectInputStream反序列化并进行转换。
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(list);
byte[] bytes = bos.toByteArray();
将Author
类序列化,并将列表写入由ByteArrayOutputStream
支持的ObjectOutputStream
。
将您的类序列化;在字节流上创建ObjectStream,并将列表写入ObjectStream。将来自ByteStream的字节缓冲区传递给缓存API。
从缓存中检索时,您需要反向执行此过程。从缓存API返回的byte[]创建一个ByteStream;从ByteStream创建一个ObjectStream;从ObjectStream读取您的集合。