java 对象序列化 数组_序列化-将任何对象转换为j中的字节数组
您要執(zhí)行的操作稱為“序列化”。 有幾種方法可以做到,但是如果您不需要花哨的東西,我認(rèn)為使用標(biāo)準(zhǔn)Java對(duì)象序列化就可以了。
也許您可以使用這樣的東西?
package com.example;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class Serializer {
public static byte[] serialize(Object obj) throws IOException {
try(ByteArrayOutputStream b = new ByteArrayOutputStream()){
try(ObjectOutputStream o = new ObjectOutputStream(b)){
o.writeObject(obj);
}
return b.toByteArray();
}
}
public static Object deserialize(byte[] bytes) throws IOException, ClassNotFoundException {
try(ByteArrayInputStream b = new ByteArrayInputStream(bytes)){
try(ObjectInputStream o = new ObjectInputStream(b)){
return o.readObject();
}
}
}
}
可以對(duì)此進(jìn)行一些改進(jìn)。 至少事實(shí)是每個(gè)字節(jié)數(shù)組只能讀取/寫入一個(gè)對(duì)象,這可能是或可能不是您想要的。
請(qǐng)注意,“只有支持java.io.Serializable接口的對(duì)象才能寫入流”(請(qǐng)參閱java.nio.ByteBuffer)。
由于可能會(huì)遇到問題,因此java.nio.ByteBuffer的不斷分配和調(diào)整大小可能會(huì)成為瓶頸。 根據(jù)您的線程模型,您可能需要考慮重用某些對(duì)象。
對(duì)于未實(shí)現(xiàn)java.nio.ByteBuffer接口的對(duì)象的序列化,您可能需要編寫自己的序列化程序,例如,使用java.nio.ByteBuffer的read * / write *方法和java.nio.ByteBuffer的get * / put *方法,可能還要加上反射,或者拉入 第三方依賴性。
該站點(diǎn)提供了一些序列化框架的列表和性能比較。 查看API,看來Kryo可能適合您的需求。
總結(jié)
以上是生活随笔為你收集整理的java 对象序列化 数组_序列化-将任何对象转换为j中的字节数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 油管主购买现实版GTA5顶层公寓:奢侈豪
- 下一篇: svchost.exe是什么?svcho