可能重复:
在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
类可序列化并将列表写入ObjectOutputStream
由ByteArrayOutputStream
.
使您的课程可序列化;在 ByteStream 上创建一个 ObjectStream 并将您的列表写入 ObjectStream。将字节缓冲区从 ByteStream 传递到您的缓存 API。
从缓存中检索时,您将反转该过程。从缓存 API 返回的 byte[] 创建一个 ByteStream;从 ByteStream 创建一个 ObjectStream;从 ObjectStream 中读取您的集合。