Kryo:如何忽略集合中的类?

我正在使用 Kryo(库中的新手)来序列化我的数据。其中一个类(配置类)是一个集合 HashMap,它包含键和值。这些值由不同的类组成(即:字符串、整数和配置选项的自定义实现)。此映射中的某些数据不应序列化。但是,我一直无法找到跳过这些元素的好方法。

我当前的实现涉及为我希望跳过的每个类创建一个名为 IgnoreSerializer 的自定义序列化程序。写入中没有代码,读取返回空对象(见下文)。不幸的是,这并没有那么好,因为 null 被插入到 Map 中,我必须遍历集合以删除 null 元素的所有实例。这是我可以接受的解决方法,但必须有更好的方法。这也有忽略这个类的每个对象的缺点,我可能希望在另一个位置序列化。

kryo.register(Complexconfiguration.class,IgnoreSerializer.class);

...

@Override
public void write ( Kryo kryo,Output output,Object object )
{
    //System.out.println("IgnoreSerializer: Ignored Class: " + object.getclass());  
}

@Override
public Object read ( Kryo kryo,Input input,Class<? extends Object> type )
{
    return null;
}

我还想避免复制此(或任何)集合并对其进行序列化。

我还有哪些选择?

编辑: 另一种解决方案是创建一个自定义集合,我可以在其中注册被忽略的类和其他数据,并且不接受空值。然后使用它而不是 HashMap (可能会继承它)。我必须看看这在 Kryo 使用时是否有效,正如我目前假设的那样,他们使用 put 方法(我可以覆盖它)。

merkava_yue 回答:Kryo:如何忽略集合中的类?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1048708.html

大家都在问