【问题标题】:Kryo setCopyTransientKryo setCopyTransient
【发布时间】:2015-09-20 11:01:21
【问题描述】:

我正在尝试使用 Kryo 库来执行对象的深度复制,但我遇到了一个小问题。我想深度复制一个没有瞬态变量的对象。我知道我可以将setCopyTransient(false) 用于FieldSerializer,如下所示:

FieldSerializer<?> playerSerializer = new FieldSerializer<Player>(kryo, Player.class);
playerSerializer.setCopyTransient(false);
kryo.register(Player.class, playerSerializer);

但我必须为每个班级设置一个新的FieldSerializer。我可以以某种方式从 Kryo 获得默认的 FieldSerilizer 并设置为 setCopyTransient(false) 吗?我尝试了类似的解决方案和类似的解决方案,但它什么也没做:

FieldSerializer<?> serilizer = (FieldSerializer<?>) kryo.getDefaultSerializer(FieldSerializer.class);
serilizer.setCopyTransient(false);

【问题讨论】:

    标签: java serialization deep-copy kryo


    【解决方案1】:

    您使用的是哪个版本的 kryo。我正在使用 3.0.0 并且我的瞬态字段未序列化。

    【讨论】:

    • 我使用的是 kryo 版本 3.0.3。您是否使用 kryo 进行深度复制(kryo.copy() 方法)?复制不会序列化为字节并返回。在正常的序列化中,瞬态字段被省略,但在合作中则没有。
    • @Sabriael 不。我正在使用它通过网络流式传输数据。我认为文案可能是故意的。
    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多