序列化Lucene';s OpenBitSet 4.9.0使用Java
使用Lucene的OpenBitSet 4.9.0,我想序列化OpenBitSet类的一个对象实例。由于OpenBitSet类没有实现Serializable,我创建了自己的类来扩展OpenBitSet:序列化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; } 但是,在反序列化之后,不设置原始位。如何正确实现
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();
}
}