文章目录
入门
-
Kryo(github地址)是一个快速,高效的对象图序列化Java框架。该项目的目标是速度,效率和易于使用的API。无论何时需要将对象持久化到文件,数据库还是通过网络,该项目都非常有用。
-
Kryo还可以执行自动的深层和浅层复制/克隆。这是直接从对象复制到对象,而不是对象->字节->对象
-
依赖
compile group: 'com.esotericsoftware', name: 'kryo', version: '4.0.1'
-
由于其底层依赖于 ASM 技术,与 Spring 等框架可能会发生 ASM 依赖的版本冲突,所以提供了另外一个依赖以供解决此问题
compile group: 'com.esotericsoftware', name: 'kryo-shaded', version: '4.0.1'
-
简单操作
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()); }
读写方式
-
Kryo 共支持三种读写方式
-
如果类是已知的,并且对象不为null
kryo.writeObject(output, someObject); // ... SomeClass someObject = kryo.readObject(input, SomeClass.class);
-
如果类是已知的,并且对象可能为null
kryo.writeObjectOrNull(output, someObject); // ... SomeClass someObject = kryo.readObjectOrNull(input, SomeClass.class);
-
如果类的字节码未知,并且对象可能为 null
kryo.writeClassAndObject(output, object); // ... Object object = kryo.readClassAndObject(input); if (object instanceof