1. 程式人生 > >Java中transient關鍵字

Java中transient關鍵字

在Java中,一個物件實現了Serilizable介面,就可以實現序列化。但是有些時候某些屬性是不需要序列化的,只需要將這些欄位加上transient關鍵字修飾,在序列化時就可以避開這些屬性。
如HashMap中的一些欄位:

public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable {

    private static final long serialVersionUID = 362498820763181265
L; //......省略10000行...... /** * The table, initialized on first use, and resized as * necessary. When allocated, length is always a power of two. * (We also tolerate length zero in some operations to allow * bootstrapping mechanics that are currently not needed.) */ transient Node<K,V>[] table; /** * Holds cached entrySet(). Note that AbstractMap fields are used * for keySet() and values(). */
transient Set<Map.Entry<K,V>> entrySet; /** * The number of key-value mappings contained in this map. */ transient int size; /** * The number of times this HashMap has been structurally modified * Structural modifications are those that change the number of mappings in * the HashMap or otherwise modify its internal structure (e.g., * rehash). This field is used to make iterators on Collection-views of * the HashMap fail-fast. (See ConcurrentModificationException). */
transient int modCount; //......省略10000行......