我们可以使用transient关键字来避免序列化字段.还有其他办法吗?
JavaArrayList使用自定义序列化并显式编写size. 然而,尺寸并未在ArrayListas中标记transient。为什么size要写两次:一次via defaultWriteObject,再次vis writeInt(size),如下所示(writeObject方法)?
s.defaultWriteObject();
// Write out size as capacity for behavioral compatibility with clone()
s.writeInt(size);
// Write out all elements in the proper order.
for (int i=0; i<size; i++) {
s.writeObject(elementData[i]);
}
Run Code Online (Sandbox Code Playgroud)