使用Java序列化Lucene的OpenBitSet 4.9.0

时间:2014-08-27 10:34:31

标签: java serialization lucene bitset

使用Lucene的OpenBitSet 4.9.0,我想序列化OpenBitSet类的对象实例。由于OpenBitSet类没有实现Serializable,我创建了自己的类,扩展了OpenBitSet:

public class MyBitSet extends OpenBitSet implements Serializable
{
    private static final long serialVersionUID = 1L;
}

然而,在反序列化之后,未设置原始位。如何正确实现可序列化的OpenBitSet?

从他们的网站引用:

  

它还允许人们有效地实现备用序列化或   交换格式。

2 个答案:

答案 0 :(得分:0)

我会这样做:

  1. 扩展OpenBitSet以访问protected long[] bitsprotected int wlen。这些是唯一提供州的。
  2. 实施Externalizable,并(de)序列化readExternalwriteExternal中的这两个字段。

答案 1 :(得分:0)

谢谢,我结束了这个解决方案:

public class MyBitSet extends OpenBitSet implements Externalizable
{
    private static final long serialVersionUID = 1L;

    @Override
    public void writeExternal(ObjectOutput out) throws IOException
    {
        out.writeObject(bits);
        out.writeInt(wlen);     
    }

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
    {
        bits = (long[]) in.readObject();
        wlen = in.readInt();
    }
}