我正在阅读Apache Commons源代码以成为更好的程序员。我在AbstractLinkedList中注意到了:

transient Node<E> header;

/** The size of the list */
transient int size;

/** Modification count for iterators */
transient int modCount;


我们是否不需要将它们序列化/反序列化?

最佳答案

如果您的类实现了Serializable接口,则默认情况下,序列化对象时,所有非瞬态属性都将作为自定义二进制流写出。但是,如果您想更好地控制“序列化数据”的写出方式,通常可以将“依赖于实现”的属性标记为trasient,并为该特定类实现自己的自定义readObject / writeObject方法。

为了证明这一点,您会发现分别由覆盖的doReadObjectdoWriteObject方法调用的same class has methods like readObjectwriteObject

关于java - 为什么AbstractLinkedList中的属性是 transient 的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21354494/

10-12 01:33