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

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

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

 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 hashMapVal;

private String strVal;

public int[] getIntArray () {

return intArray;

}

public void setIntArray (int[] intArray) {

this.intArray = intArray;

}

public HashMap getHashMapVal () {

return hashMapVal;

}

public void setHashMapVal (HashMap 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());

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

java kryo_Kryo框架使用方法代码示例相关推荐

  1. java kryo register_java相关:Kryo框架使用方法代码示例

    java相关:Kryo框架使用方法代码示例 发布于 2021-1-21| 复制链接 摘记: Kryo框架的source已移至https://github.com/EsotericSoftware/kr ...

  2. java readtimeout_Java HttpURLConnection.getReadTimeout方法代码示例

    import java.net.HttpURLConnection; //导入方法依赖的package包/类 /** * 得到响应对象 * * @param urlConnection * @retu ...

  3. java invalidate_Java Component.invalidate方法代码示例

    import java.awt.Component; //导入方法依赖的package包/类 /** Installs the component we will embed to display t ...

  4. java hasmoreelements_Java IOException.hasMoreElements方法代码示例

    import java.io.IOException; //导入方法依赖的package包/类 /** * fileName���� ���� package �������� ������ ���� ...

  5. java methode_Java Method.getTypeParameters方法代码示例

    import java.lang.reflect.Method; //导入方法依赖的package包/类 private void validateRuleMethod(MethodRuleDefin ...

  6. java setmethod_Java Operation.setJavaMethod方法代码示例

    import com.sun.tools.internal.ws.processor.model.Operation; //导入方法依赖的package包/类 private void createJ ...

  7. java cancel_Java RunnableFuture.cancel方法代码示例

    import java.util.concurrent.RunnableFuture; //导入方法依赖的package包/类 @Test public void testSnapshotAsyncC ...

  8. java getevent_Java ActionEvent.getWhen方法代码示例

    import java.awt.event.ActionEvent; //导入方法依赖的package包/类 @Override final public void actionPerformed(A ...

  9. java deepcopy_Java JsonNode.deepCopy方法代码示例

    import com.fasterxml.jackson.databind.JsonNode; //导入方法依赖的package包/类 /** * Applies this schema rule t ...

最新文章

  1. (14)某工业生产部门根据国家计划的安排, 拟将某种高效率的5台机器,分配给所属的3个工厂A,B,C,各工厂在获得这种机器后,可以为国家盈利的情况如表4-10所示。
  2. python数据怎么用不了_为什么自学Python看不进去?
  3. 以下关于java中布局管理说法错误的是_对于 Java 中的布局管理器,以下说法中错误的是( )。_2019复习答案_学小易找答案...
  4. 【项目管理】ITTO-范围管理
  5. WebSocket协议探究(序章)
  6. opencv模糊图像变清晰_opencv-python 4.2图像模糊
  7. Team Foundation Server 的 Service Pack 1(中文)也发布了,
  8. 如何在linux上压缩文件夹,如何在Linux中使用命令压缩文件和文件夹
  9. SAP表维护自动带出对象属性
  10. 谷歌插件如何下载到本地
  11. 算法题目打卡:Ques20201017
  12. edg击败we视频_lpl2018春季赛2月4日WEvsEDG比赛视频:EDG2:1击败WE
  13. MyBatis超详细笔记
  14. 刷脸支付行业代理的几个坑,你踩了吗?
  15. c语言如何小写转换为大写字母,c语言怎么将小写转换为大写
  16. 来!学逆向都想的手游防护(下篇更新破解)
  17. 【ZOJ3587】Marlon's String——白四爷×KMP 白濑肆の算法完全解读KMP篇 KMP来袭第二弹前缀什么的果然最讨厌了!【1.0%达成!】
  18. Python实现抓取访问特定URL的数据包
  19. java实现多个mav文件拼接合并成一个mav文件
  20. 用IE浏览器打开网页显示网站还原错误

热门文章

  1. 史上最全ajax全套讲解
  2. Java 算法-异或校验和
  3. Oracle10g安装中遇到的错误及解决办法
  4. eclipse new server Cannot create a server using the selected type 网上有两种办法,其实原理一样...
  5. 小霸王双核/四核手机最新参数曝光
  6. JS得到对应字段 的值。遍历
  7. 对标以太坊的EOS再火,也拼不过InterValue的区块链4.0
  8. flask部署机器学习_如何开发端到端机器学习项目并使用Flask将其部署到Heroku
  9. 领域驱动设计 敏捷_反馈失败:发现敏捷数据驱动的致命弱点的风险
  10. css 形状_在CSS形状之外思考