【问题标题】:Serializing and Deserializing Object Arrays in Kryo在 Kryo 中序列化和反序列化对象数组
【发布时间】:2013-01-24 10:57:42
【问题描述】:

我最近一直在测试 Kryo 的序列化和反序列化,并且总体上对它感到满意,但是不清楚如何处理包含对象数组的类的(反)序列化。该类包含最终字段,因此我似乎无法使用默认的 FieldSerializer (错误是“无法创建类(缺少无参数构造函数)”,但无参数构造函数不适合最终原语)。所以,给定班级

@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 中遗漏了一些东西,这将使我可以在自定义序列化程序中执行此操作,但这可能是错误的轨道..

【问题讨论】:

  • 只使用 kryo.writeObject() 和 kryo.readObject 有什么问题?也就是说,为什么还要在 Kyro 之上编写自己的序列化?
  • 有同样的问题(

标签: java serialization deserialization kryo


【解决方案1】:

问题是3年前提出的,所以写答案有点傻,但我找到了解决方案,直接在kryo的自述文件中描述

这是link

基本上,当您通过简单调用writeObject(Output, Object) 而不提供自己的序列化程序来序列化对象时,kryo 使用默认的FieldSerializer,它需要非参数构造函数。

您可以提供 kryo 将使用 reflection 机制调用的私有非参数构造函数。我认为这是您想要的合适方式,因为私有零参数构造函数不违反架构原则

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2015-08-10
    • 2016-10-14
    • 2014-12-24
    • 2013-04-11
    相关资源
    最近更新 更多