【发布时间】:2011-12-22 14:01:34
【问题描述】:
我正在将一个对象序列化为 SQLiteOpenHelper 中的 blob,如下所示:
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(value);
out.close();
每个类都定义了自己的永不改变的serialVersionUID。
序列化/反序列化实际上是如何工作的?它是否记得字段的名称以及与之关联的值?如果我继续添加/删除字段,是否有可能修改现有字段的值?
例如,假设我序列化了这个类:
public class Foo implements Serializable {
private static final long serialVersionUID = 4068188167994381987L;
String x;
int y;
}
Where x is "A", and y is 1;
然后我像这样修改类:
public class Foo implements Serializable {
private static final long serialVersionUID = 4068188167994381987L;
float f;
String x;
}
如果我继续添加/删除字段,每次我反序列化Foo x 仍然是“A”吗?
【问题讨论】:
标签: java android serialization