我最近一直在测试Kryo的序列化和反序列化,并且对它一直很满意,但是如何处理包含对象数组的类的(反)序列化并不清楚。该类包含final字段,因此我似乎无法使用默认的FieldSerializer(错误是“无法创建类(缺少no-arg构造函数)”,但是一个no-arg构造函数不适合最终的原语)。所以,给定班级
@AllArgsConstructor
public class DataObject{
private final double field1;
private final double field2;
private SubObject[] children;
}
@AllArgsConstructor
public class SubObject{
private final double field1;
private final double field2;
}
如何有效地编写串行器/解串器来处理这个问题?我的假设是我在com.esotericsoftware.kryo.io.Input中遗漏了一些东西,这将让我在自定义序列化程序中执行此操作,但这可能是错误的轨道..
答案 0 :(得分:0)
kryo
的自述文件中描述
这是一个link
基本上,当您通过简单调用writeObject(Output, Object)
序列化对象而不提供自己的序列化程序时,kryo
使用需要非参数构造函数的默认FieldSerializer
。
您可以提供kryo
将使用reflection
机制调用的私有非参数构造函数。我认为这是合适的方式,你想要的是因为私有零参数构造函数不违反架构原则