可能重复:
在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 中读取您的集合。