Java的ArrayList
使用自定义序列化并显式编写size
.然而,尺寸在ArrayList
中并没有标记为transient
.为什么大小写两次:一次是通过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]);
}