序列化Lucene';s OpenBitSet 4.9.0使用Java

序列化Lucene';s OpenBitSet 4.9.0使用Java,java,serialization,lucene,bitset,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; } 但是,在反序列化之后,不设置原始位。如何正确实现

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

public class MyBitSet extends OpenBitSet implements Serializable
{
    private static final long serialVersionUID = 1L;
}
但是,在反序列化之后,不设置原始位。如何正确实现可序列化的OpenBitSet

从他们的网站上引用:

它还允许有效地实现替代序列化或 交换格式


我想这样做如下:

  • 扩展
    OpenBitSet
    以访问
    protectedlong[]位
    protectedintwlen
    。这些是唯一提供状态的
  • 实现
    Externalizable
    ,并(反)序列化
    readExternal
    writeExternal
    中的这两个字段

  • 谢谢,我以以下解决方案结束:

    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();
        }
    }