ArrayList中的数组为什么被transient修饰,arraylisttransient
分享于 点击 2696 次 点评:33
ArrayList中的数组为什么被transient修饰,arraylisttransient
Java中的ArrayList底层实现机制是动态扩容数组,最近在看ArrayList源码时发现数组被定义为transient,源代码如下
private transient Object[] elementData;
当时有些想不通,为什么最为重要的数组元素要定义为transient?难道不希望elementData被序列化?后来查阅了一些资料了解到,假如elementData的长度为10,而其中只有5个元素,那么在序列化的时候只需要存储5个元素,而数组中后面5个元素是不需要存储的。于是将elementData定义为transient,避免了Java自带的序列化机制,并定义了两个方法,实现了自己可控制的序列化操作。private void writeObject(java.io.ObjectOutputStream s)
private void readObject(java.io.ObjectInputStream s)
具体的细节请查考下面这个文章,写的非常全面。
http://bluepopopo.iteye.com/blog/486548
相关文章
- 暂无相关文章
用户点评