ArrayList的elementData为什么要用transient修饰,
分享于 点击 28208 次 点评:279
ArrayList的elementData为什么要用transient修饰,
transient干嘛用的?
当对象被序列化时(写入字节序列到目标文件)时,transient阻止实例中那些用此关键字声明的变量持久化;当对象被反序列化时(从源文件读取字节序列进行重构),这样的实例变量值不会被持久化和恢复。例如,当反序列化对象——数据流(例如,文件)可能不存在时,原因是你的对象中存在类型为java.io.InputStream的变量,序列化时这些变量引用的输入流无法被打开。
那为什么ArrayList里面的elementData为什么要用transient来修饰?
因为ArrayList不能序列化和反序列化吗?肯定不是,是因为elementData里面不是所有的元素都有数据,因为容量的问题,elementData里面有一些元素是空的,这种是没有必要序列化的。ArrayList的序列化和反序列化依赖writeObject和readObject方法来实现。可以避免序列化空的元素。
相关文章
- 暂无相关文章
用户点评