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