我正在阅读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
方法。
为了证明这一点,您会发现分别由覆盖的doReadObject
和doWriteObject
方法调用的same class has methods like readObject
和writeObject
。
关于java - 为什么AbstractLinkedList中的属性是 transient 的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21354494/