Kryo框架使用方法代码示例
时间:2020-10-28 17:13:57|栏目:JAVA代码|点击: 次
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="简体中文,繁?w中文,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框架使用方法代码示例的介绍就到这里,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。
阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机