欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

ArrayList中的数组为什么被transient修饰,arraylisttransient

来源: javaer 分享于  点击 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




相关文章

    暂无相关文章

用户点评