gpt4 book ai didi

java - arraylist如何在序列化后保存数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:07 27 4
gpt4 key购买 nike

检查 java.util.ArrayList 实现时,请注意 arrayList 中的元素数据对象数组是 transient ,即使 ArrayList 是可序列化的。

transient Object[] elementData; // non-private to simplify nested class access

那么arrayList是如何通过保持elementData数组transient的方式在反序列化过程中保存其数据的呢?

最佳答案

将成员标记为transient 并不意味着该字段没有被序列化,只是它没有使用 Java 的内置字段序列化机制自动序列化。 p>

ArrayList 的情况下,序列化由自定义 writeObject 方法执行:[src]

private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException {
// Write out element count, and any hidden stuff
int expectedModCount = modCount;
s.defaultWriteObject();
// Write out size as capacity for behavioural 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]);
}
if (modCount != expectedModCount) {
throw new ConcurrentModificationException();
}
}

使用 readObject 执行反序列化。

关于java - arraylist如何在序列化后保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731647/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com