使用Lucene的OpenBitSet 4.9.0,我想序列化OpenBitSet类的对象实例。由于OpenBitSet类没有实现Serializable,我创建了自己的类,扩展了OpenBitSet:
public class MyBitSet extends OpenBitSet implements Serializable
{
private static final long serialVersionUID = 1L;
}
然而,在反序列化之后,未设置原始位。如何正确实现可序列化的OpenBitSet?
从他们的网站引用:
它还允许人们有效地实现备用序列化或 交换格式。
答案 0 :(得分:0)
我会这样做:
OpenBitSet
以访问protected long[] bits
和protected int wlen
。这些是唯一提供州的。Externalizable
,并(de)序列化readExternal
和writeExternal
中的这两个字段。答案 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();
}
}