序列化之Kryo

入门

  1. Kryo(github地址)是一个快速,高效的对象图序列化Java框架。该项目的目标是速度,效率和易于使用的API。无论何时需要将对象持久化到文件,数据库还是通过网络,该项目都非常有用。

  2. Kryo还可以执行自动的深层和浅层复制/克隆。这是直接从对象复制到对象,而不是对象->字节->对象

  3. 依赖

    compile group: 'com.esotericsoftware', name: 'kryo', version: '4.0.1'
    
  4. 由于其底层依赖于 ASM 技术,与 Spring 等框架可能会发生 ASM 依赖的版本冲突,所以提供了另外一个依赖以供解决此问题

    compile group: 'com.esotericsoftware', name: 'kryo-shaded', version: '4.0.1'
    
  5. 简单操作

    
    public class Person {
         
        private String username = "jannal";
        private String password = "123";
        ...省略getter setter...
    }  
    
    @Test
    public void case1() throws FileNotFoundException {
         
        Kryo kryo = new Kryo();
        Output output = new Output(new FileOutputStream("person.db"));
        Person person = new Person();
        kryo.writeObject(output, person);
        output.close();
        Input input = new Input(new FileInputStream("person.db"));
        person = kryo.readObject(input, Person.class);
        input.close();
        assert "jannal".equals(person.getUsername());
    }
    

读写方式

  1. Kryo 共支持三种读写方式

  2. 如果类是已知的,并且对象不为null

    kryo.writeObject(output, someObject);
    // ...
    SomeClass someObject = kryo.readObject(input, SomeClass.class);
    
  3. 如果类是已知的,并且对象可能为null

    kryo.writeObjectOrNull(output, someObject);
    // ...
    SomeClass someObject = kryo.readObjectOrNull(input, SomeClass.class);
    
  4. 如果类的字节码未知,并且对象可能为 null

    kryo.writeClassAndObject(output, object);
    // ...
    Object object = kryo.readClassAndObject(input);
    if (object instanceof 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值