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

问题描述:

可能重复:
Converting any object to a byte array in java在Java中,如何将对象列表转换为字节数组?

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

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

+3

http://docs.oracle.com/javase/tutorial/jndi/objects/serial.html –

Author类应该实现Serializable

然后你可以使用ObjectOutputStream序列化对象和ByteArrayOutputStream得到它写成字节。

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

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

这是封闭的,所以不确定人们是否可以阅读它。但是让我们来测试一下*的功能:当我实现Serializable接口时,我应该提供一个serialVersionID,它应该是一个UID。问题是,我是应该提供还是罚款让它离开。如果我应该提供它,如何?任何UID都很好? – Steve

充分利用Author类序列化并写入名单由ByteArrayOutputStream支持的ObjectOutputStream

让你的类可序列化;通过ByteStream创建一个ObjectStream并将您的列表写入ObjectStream。将字节流从ByteStream传递到缓存API。

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