使用場景:當乙個類實現了serilizable介面,那麼這個類的所有屬性和方法都可以被序列化。但有時,我們不希望有些屬性被序列化,那麼我們可以用transient關鍵字修飾這個屬性。
public
class
user
implements
serializable
public
void
setusername(string username)
public string getpasswd()
public
void
setpasswd(string passwd)
}
注:
乙個靜態變數不管是否被transient修飾,均不能被序列化。
transient關鍵字只能修飾變數,而不能修飾方法和類。
區域性變數是不能被transient關鍵字修飾的。
transient關鍵字修飾的變數如果是使用者自定義類變數,則該類需要實現serializable介面。
例外情況:
物件的序列化可以通過實現兩種介面來實現:若實現的是serializable介面,則所有的序列化將會自動進行;若實現的是externalizable介面,則沒有任何東西可以自動序列化,需要在writeexternal方法中進行手工指定所要序列化的變數,這與是否被transient修飾無關。
public
class
externalizabletest
implements
externalizable
@override
public
void
readexternal(objectinput in) throws ioexception,
classnotfoundexception
public
static
void
main(string args) throws exception
}
Transient註解的作用
entity table name log login public class log login id column name s id unique true,nullable false generatedvalue generator system uuid genericgenerato...
transient關鍵字詳解
一旦變數被transient修飾,變數將不再是物件持久化的一部分,該變數內容在序列化後無法獲得訪問。transient關鍵字只能修飾變數,而不能修飾方法和類。注意,本地變數是不能被transient關鍵字修飾的。變數如果是使用者自定義類變數,則該類需要實現serializable介面。乙個靜態變數不...
transient關鍵字的使用
我們一般使用實現介面serializable或者externalizable來對乙個類進行序列化,二者的區別在於前者是自動序列化的,而後者則需要手動進行序列化,即實現該介面的writeexternal 和 readexternal 方法。transient關鍵字可用於修飾已實現了上述兩個介面的類的成...