今天看到有人说在java中返回了list,如果需要使用数组怎么处理?
我就在如果使用的是ArrayList,ArrayList使用了数组,虽然ArrayList中的数组是private的,但是可以使用反射获取到啊?就查看了一下源码,发现其中定义了一个elementData,但是这个数组既然使用transient,我记得使用transient的变量在序列化的时候,不会序列化,那如果我需要将这个对象反序列化,怎么确保其中的数据正常的反序列化呢??
后来发现在ArrayList中含有方法writeObject这个方法,顿时明白了,由于在ArrayList中的elementData这个数组的长度是变长的,java在扩容的时候,有一个扩容因子,也就是说这个数组的长度是大于等于ArrayList的长度的,我们不希望在序列化的时候将其中的空元素也序列化到磁盘中去,所以需要手动的序列化数组对象,所以使用了transient来禁止自动序列化这个数组