Kryo框架使用方法代码示例

作者:OK_boom 时间:2021-05-30 15:46:05 

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框架使用方法代码示例的介绍就到这里,希望对大家有所帮助。有什么问题可以随时留言,小编会及时回复大家的。

来源:http://blog.csdn.net/rocklee/article/details/26451739

标签:java,Kryo
0
投稿

猜你喜欢

  • Java Benchmark 基准测试的实例详解

    2023-10-08 11:01:02
  • 使用Spring Security OAuth2实现单点登录

    2023-08-13 01:44:34
  • Flutter实现底部导航栏创建详解

    2023-09-29 10:01:04
  • java版十大排序经典算法:完整代码(3)

    2021-07-17 05:09:09
  • SpringCloud远程服务调用实战笔记

    2022-07-13 06:40:19
  • Java数据结构BFS广搜法解决迷宫问题

    2023-12-03 16:04:33
  • Android Gradle模块依赖替换使用技巧

    2021-07-03 20:22:53
  • IntelliJ IDEA 中使用jRebel进行 Java 热部署教程图解

    2023-04-20 19:23:42
  • Android 获取 usb 权限的两种方法

    2022-01-06 14:37:06
  • SpringCloud @RefreshScope注解源码层面深入分析

    2023-06-14 03:17:27
  • 为spring get请求添加自定义的参数处理操作(如下划线转驼峰)

    2021-12-04 13:01:43
  • Java完美实现2048小游戏

    2023-06-14 12:59:25
  • 一文详解kafka序列化器和拦截器

    2023-06-18 01:06:08
  • Java中自然排序和比较器排序详解

    2022-09-04 21:04:49
  • Java递归遍历树形结构的实现代码

    2021-11-15 19:51:59
  • Java实现24点小游戏

    2023-07-26 07:34:55
  • Android Jetpack库剖析之LiveData组件篇

    2022-08-31 02:08:13
  • Android图片处理:识别图像方向并显示实例教程

    2023-02-11 08:01:07
  • 一篇文章带你入门Java之编程规范

    2022-02-25 16:18:40
  • Kotlin基础教程之控制流(顺序,分支,循环)

    2022-03-15 11:37:33
  • asp之家 软件编程 m.aspxhome.com