2012-12-16 40 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