2012-12-16 42 views
2

CopyOnWriteArrayList被标记为Serializable。但它的内部状态是暂时的。任何人都可以请回答我们试图在这种类型的列表中序列化。CopyOnWriteArrayList内部状态为瞬态

/** The array, accessed only via getArray/setArray. */ 
private volatile transient Object[] array; 

回答

4

writeObject方法已被覆盖,以特定方式存储状态。所以实际的商店,即array是暂时的,并不影响CopyOnWRiteArrayList对象的序列化。

对象中的瞬态成员将在默认序列化过程中由JVM保留。但是,如果您覆盖writeObject(),那么该方法定义将用于序列化对象而不是默认的序列化策略。

+0

谢谢。 writeObject方法使其明确 –

+0

我想知道为什么CopyOnWRiteArrayList需要定制序列化? – XiaJun