Kryo框架使用方法代码示例
程序员文章站
2024-02-26 12:49:22
kryo框架的source已移至https://github.com/esotericsoftware/kryo ,进入此页面,然后点击右边的download zip按钮,...
kryo框架的source已移至https://github.com/esotericsoftware/kryo ,进入此页面,然后点击右边的download zip按钮,就能下载到最新版本的kryo框架。
导入eclipse时,记得jdk/jre选用 jdk1.7版本,因为kryo会引用到unsafe()对象的一些方法jdk1.7才兼容。。
先来一个string类的序列化跟还原,是不是很简单?
</pre><pre name="code" class="java"> private static void teststring () { kryo kryo=new kryo(); string w_str1="简体中文,繁體中文,english"; //把w_str1对象序列化 output output=new output(1024); kryo.writeobject(output, w_str1); output.flush(); output.close(); byte[] w_ret= output.tobytes(); //获得byte数据,这些数据可用作储存、网络传输等... //还原 input input=new input(w_ret); input.close(); string w_str2=kryo.readobject(input, string.class); system.out.println(w_str2); }
再来一个hashmap类的序列化跟还原,因为kryo自带了很多java基本类的serializer,所以尽管不知道serializer,kryo也自动匹配:
public static void testhashmap() throws nosuchalgorithmexception{ kryo kryo=new kryo(); hashmap h=new hashmap(); h.put("k1", "v1"); h.put("k2", "v2"); output output=new output(1, 1024); kryo.writeobject(output, h); output.close(); byte[] data=output.tobytes(); input i=new input(data); i.close(); hashmap h2= (hashmap)kryo.readobject(i, hashmap.class); system.out.println(h2.get("k2")); }
那么,我自定义的bean又应该如何处理呢?下面给出例子:
1、先定义bean testbean:
public static class testbean implements serializable{ private int[] intarray; private hashmap<string,string> hashmapval; private string strval; public int[] getintarray () { return intarray; } public void setintarray (int[] intarray) { this.intarray = intarray; } public hashmap<string, string> gethashmapval () { return hashmapval; } public void sethashmapval (hashmap<string, string> hashmapval) { this.hashmapval = hashmapval; } public string getstrval () { return strval; } public void setstrval (string strval) { this.strval = strval; } }
2、因为这是自定义的bean,kryo在序列化前先要对testbean进行注册:kryo.register(testbean.class,new beanserializer(kryo, testbean.class)); ,具体例子如下:
public static void testbean() throws nosuchalgorithmexception{ kryo kryo=new kryo(); kryo.register(testbean.class,new beanserializer(kryo, testbean.class)); testbean tb1=new testbean(); tb1.setstrval("test1"); tb1.sethashmapval(new hashmap<string,string>()); tb1.gethashmapval().put("k1", "v1"); tb1.gethashmapval().put("k2", "v2"); int[] ints=new int[3]; ints[0]=1; ints[1]=2; ints[2]=3; tb1.setintarray(ints); output output=new output(1, 1024); kryo.writeobject(output, tb1); output.close(); byte[] data=output.tobytes();
input i=new input(data); i.close(); testbean tb2= (testbean)kryo.readobject(i, testbean.class); system.out.println(tb2.strval); system.out.println(tb2.hashmapval.get("k1")); system.out.println(tb2.intarray[2]); }
总结
是不是非常简单?关于kryo框架使用方法代码示例的介绍就到这里,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。