其他分享
首页 > 其他分享> > ArrayList中transient

ArrayList中transient

作者:互联网

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

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

说明:

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

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

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

 

writeObject:

readObject:

 

标签:ArrayList,readObject,writeObject,transient,缓冲区,序列化
来源: https://www.cnblogs.com/muzhongjiang/p/16457926.html