在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
。
Author类应该实现Serializable
然后你可以使用ObjectOutputStream
序列化对象和ByteArrayOutputStream
得到它写成字节。
然后使用ObjectInputStream对其进行反序列化并转换回来。
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(list);
byte[] bytes = bos.toByteArray();
这是封闭的,所以不确定人们是否可以阅读它。但是让我们来测试一下*的功能:当我实现Serializable接口时,我应该提供一个serialVersionID,它应该是一个UID。问题是,我是应该提供还是罚款让它离开。如果我应该提供它,如何?任何UID都很好? – Steve
充分利用Author
类序列化并写入名单由ByteArrayOutputStream
支持的ObjectOutputStream
。
让你的类可序列化;通过ByteStream创建一个ObjectStream并将您的列表写入ObjectStream。将字节流从ByteStream传递到缓存API。
从缓存中检索时,会反转该过程。从缓存API返回的byte []中创建一个ByteStream;从ByteStream创建一个ObjectStream;从ObjectStream中读取你的集合。
http://docs.oracle.com/javase/tutorial/jndi/objects/serial.html –