Kryo框架使用方法代码示例

2025-05-29 0 96

Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kryo框架。

导入Eclipse时,记得JDK/JRE选用 JDK1.7版本,因为Kryo会引用到unsafe()对象的一些方法JDK1.7才兼容。。

先来一个String类的序列化跟还原,是不是很简单?

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15
</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也自动匹配:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
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:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23
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)); ,具体例子如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
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();

?

1

2

3

4

5

6

7
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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Kryo框架使用方法代码示例 https://www.kuaiidc.com/114577.html

相关文章

发表评论
暂无评论