ArrayList中transient

 查看JDK源码的时候会发现很多地方都会加上transient关键字来修饰一些属性,那究竟是出于什么考虑才这么做呢?

我觉得,应该是为了节约磁盘空间

说明:

存储 ArrayList 元素的数组缓冲区。

当添加第1个元素时将扩展为 DEFAULT_CAPACITY。

这个缓冲区的容量实际上并不是ArrayList的容量(真正容量是size),因为其实际上会预留一些空间,当空间不足时还会扩容,为减少浪费,因此在序列化时不会按照默认算法将这个成员变量写入磁盘。而是写了个writeObject方法,序列化时会调用这个方法将其持久化,在反序列化是,调用readObject,将其恢复出来。

 

writeObject:

readObject:

 

posted @ 2022-07-08 12:57  mzjnumber1  阅读(76)  评论(0编辑  收藏  举报