是否可以通过注册接口而不是具体类来使用 Kryo 反序列化/反序列化对象?
具体来说,我需要反序列化 Java 7Path
对象在接口中定义。
我尝试编写一个序列化程序,将路径 URI 保存为字符串,并在读取反序列化期间重新创建它。但事实证明,Kryo 从未调用我的序列化编写器方法。
这是我的(Groovy)代码:
class PathSerializer extends FieldSerializer<Path> {
PathSerializer(Kryo kryo) {
super(kryo, Path)
}
public void write (Kryo kryo, Output output, Path path) {
def uri = path.toUri().toString()
kryo.writeObject(output, uri)
}
public Path read (Kryo kryo, Input input, Class<Path> type) {
def uri = kryo.readObject(input,String)
Paths.get(new URI(uri))
}
}
def kryo = new Kryo()
kryo.register(Path, new PathSerializer(kryo))
def path = Paths.get('hola')
Output output = new Output(new FileOutputStream("file.bin"));
kryo.writeObject(output, path);
output.close();
知道如何使用 Kryo 注册序列化接口吗?
Thanks
Use the addDefaultSerializer
method:
kryo.addDefaultSerializer(Path, new PathSerializer(kryo))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)